brauche dringend Hilfe in Java

stchwann

New member
Ich muss sagen dass ich ein Neuling bin und im Studium müssen wir direkt anfangen zu programmieren und ich habe keine Ahnung. Helfen Sie mir bitte. Das Programm ist Eclipse.
Meine Aufgabe: Schreiben Sie ein Programm, das folgende Anforderung erfüllt: Es sollen n ganze Zahlen eingegeben werden (z.B. n=10) und die Anzahl der Zahlen, die Summe der Zahlen sowie das arithmatische Mittel der Zahlen ausgegeben werden, wobei die Zahlen z=0 nicht mitgezählt werden sollen und auch nicht in die Berechnung des Mittelwertes eingehen sollen.

Ich habe:

package Aufgabe1a;

import javax.swing.JOptionPane;

public class Aufgabe1a {
private static final JOptionPane JoptionPane = null;

public static void main (String[] args){
int n=0;
try {
n=Integer.parseInt(JOptionPane.showInputDialog("Anzahl:"));
JOptionPane.showMessageDialog(null,"Die eingegebene Zahl war:"+n);
}catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "das ist keine Zahl"
+" oder die wird hier nicht als solche verstanden!\n"
+e.toString());
}
}
}

Wie mache ich den Rest?
 
Jetzt brauchst du eine Schleife die n-mal eine Zahl einliest. Du musst die Zahlen für die Aufgabe nicht mal speichern, sondern nur die eingelesene Zahl zur Summe addieren.

Zum Schluss musst du nur noch die Summe (die du ja schon hast) durch die Anzahl 👎 teilen.

Code:
int summe = 0, i, mittel;
for(i=0; i<n; i++)
{
 summe = summe + [eingelesene Zahl];
}

mittel = summe / n;

Beim Einlesen der Zahlen brauchst du natürlich auch einen kompletten try&catch-Block.
 
Zuletzt bearbeitet:
sorry falls es keine Umstände macht könntest du vllt schreiben wie ich die Zeilen einzugeben habe? Wenn ich die Zeilen hinzufüge erscheinen immer Fehlermeldungen.


EDIT (autom. Beitragszusammenführung):


Ich habe es so eingegeben. Aber bei dem Pluszeichen erscheint ein Syntax Error on token "+", Expression expected after this token

package Aufgabe1a;

import javax.swing.JOptionPane;

public class Aufgabe1a {

public static void main (String[] args){
int n=0;
try {
n=Integer.parseInt(JOptionPane.showInputDialog("Anzahl:"));
JOptionPane.showMessageDialog(null,"Die eingegebene Zahl war:"+n);
}catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "das ist keine Zahl"
+" oder die wird hier nicht als solche verstanden!\n"
+e.toString());
}
}
{


int summe = 0, i, mittel;
for(i=0; i<n; i++)
{
summe = summe + ;
}

mittel = summe / n;}}


EDIT (autom. Beitragszusammenführung):


also bei summe = summe + i
 
Zuletzt bearbeitet:
Der Quelltext von mir war mehr oder weniger nur Pseudocode. Und mit "[eingelesene Zahl]" meinte ich nicht die Variable i in eckigen Klammern, sondern einfach die Variable, in der du die Zahl einliest. Wie du das machen musst weißt du doch schon (du hast ja schon eine Zahl eingelesen). Wenn du dafür eine neue Variable brauchst, musst du halt eine anlegen.

Außerdem kannst du meinen Code nicht einfach irgendwo ans Ende hin kopieren. So wie du das gepostet hast ist der nämlich außerhalb der main() und damit sowieso nicht funktionsfähig (bzw. wird nie ausgeführt).

Ich weiß nicht ob das jetzt nur hier im Forum so ist, aber wenn dein Quelltext in deiner IDE auch so aussieht, solltest du dringendst eine richtige Einrückung beachten. Bei Eclipse geht das einigermaßen automatisch über Source > Correct Indication oder [Strg]+.
 
Ich denke, es sollte ein Programm sein, wo ich 10 Zahlen vorab schon als Text eingebe
z.B. int[] zahl= {23,56,89,90,1,6,43,98,32,5};

und dann sollen Anzahl (also 10), Summe (also 443) und arithmatische Mittel (also 44,3) ausgegeben werden. 0 soll nicht dazugezählt und auch nicht in die Berechnung des Mittelwertes eingehen.


EDIT (autom. Beitragszusammenführung):


also etwa

package Aufgabe1a;

import java.util.Arrays;

import javax.swing.JOptionPane;

public class Aufgabe1a {

public static void main (String[] args){
//Ausgaben
String ausgabe1="";
String ausgabe2="";
String ausgabe3="";
//Zahlenmenge
int[] zahl= {
23,56,89,90,1,6,43,98,32,5
};
 
Zuletzt bearbeitet:
Es sollen n ganze Zahlen eingegeben werden (z.B. n=10) und die Anzahl der Zahlen, die Summe der Zahlen sowie das arithmatische Mittel der Zahlen ausgegeben werden, wobei die Zahlen z=0 nicht mitgezählt werden sollen und auch nicht in die Berechnung des Mittelwertes eingehen sollen.

So wie ich die Aufgabe verstanden habe soll der Benutzer "n ganze Zahlen eingeben" - nicht du bzw. der Programmierer. Ansonsten würde dieses (scheinbar) vorgegebene Code-Stück mit der JOptionPane überhaupt keinen Sinn machen (dabei fehlt übrigens nach dem try{ ... } der catch()-Block).

So wie du die Aufgabe im letzten Post beschrieben hast ist das ehrlich gesagt etwas zu einfach. Du kannst das ja mal als Übung programmieren. Das sollte aber nicht länger als 5 Minuten dauern (gerade bei Java), weil das Programm überhaupt keine Logik hat (das können manche Taschenrechner). Solltest du länger brauchen würde ich dir raten die Grundlagen nochmal anzuschauen. Ansonsten wirst du bei späteren Aufgaben (oder Prüfung) nicht viel erreichen. Aus dem Grund werde ich dir auch keinen fertigen Quelltext schreiben.
 
package EinUndAusgabeGrafisch;
import javax.swing.JOptionPane;
//Anzahl der Zahlen
public class EinUndAusgabeGrafisch {
public static void main(String[] args) {
int x;
x = Integer.parseInt(JOptionPane.showInputDialog("Anzahl: "));
int n=0;
for (int i=0; i<x; i++)
{try {
n=Integer.parseInt(JOptionPane.showInputDialog("Anzahl: "));
JOptionPane.showMessageDialog(null, "Die eingegebene Zahl war: " + n);
}catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Das ist keine Zahl "
+" oder die wird hier nicht als solche verstanden!\n"
+e.toString());
}
}
}
}

So oder? Der Benutzer gibt ein, ein try-Block und ein Catch-Block. Ja werde wohl nochmals die Grundlagen anschauen. Vielen Dank für deine Hilfe.
 
Ja. Jetzt musst du nur noch die Summe und das arithmetische Mittel (= "Durchschnitt") bilden. Dazu brauchst du die einzelnen Zahlen 👎 überhaupt nicht und kannst die Variable n gleich für die Summe verwenden. Also bei der Eingabe die Zahl direkt addieren:
Code:
[B]n = n + [/B]Integer.parseInt(JOptionPane.showInputDialog("Zahl: "));

Da aber laut Aufgabenstellung scheinbar bei der Ausgabe auch die Anzahl der Zahlen dabei sein soll kanns sein, dass du nicht - wie jetzt - vorher nach der Anzahl fragen sollst, sondern der Benutzer soll einfach Zahlen eingeben bis er auf "Abbrechen" klickt.
 
Durchbruch!

Mithilfe eines Freundes habe ich es endlich geschafft die Aufgabe zu lösen.
Ich habe also zunächst ein Project mit dem Namen "Aufgaben OOP" eröffnet und dann 3 Packages according to den 3 Aufgaben "1Zahlrechnung", "2EinUndAusgabe" (welches die Aufgabe ist worüber ich euch gefragt habe), und "3Geometrie" heißt.

Unter dem 1sten Package habe ich 5 Classes according to den Aufgaben a,b,c,d,e. Unter dem 2ten Package habe ich 2 Classes "EinUndAusgabe" und "Ganze Zahl". Hier trat das Problem auf mit Groß-Kleinschreibung. (hab zuerst "ein- und Ausgabe" getippt)

Unter dem 2ten Package habe ich dann 2 Classes. Die erste ist eine switch Anweisung wo ich die Zahlen in Buchstaben definiert habe und die Zweite ist dann die EinUndAusgabe. Meine Frage bezog sich zu der EinUndAusgabe. Nun mit (hoffentlich) richtigem Quellcode:

package EinUndAusgabe;
import javax.swing.JOptionPane;
public class EinUndAusgabe {
_____public static void main(String[ ] args){
int wert=0;
try{
_____wert = Integer.parseInt(JOptionPane.showInputDialog("Bitte eine Zahl eingeben: " ) );
_____if (wert <= 0){
_____JOptionPane.showMessageDialog(null, "Die eingegebene Zahl ist nicht positiv!");
____return;
______}
______GanzeZahl gz = new GanzeZahl();//Initialisierung eines Objektes der Klasse "ganzeZahl".
______________String text = gz.wertToText(wert);//Anrufen der Methode "wertToText" in der Klasse "ganzeZahl" durch die Instanz "gz".
______________JOptionPane.showMessageDialog(null , "Die Zahl " + wert + " als text ist: " + text);
__}catch (NumberFormatException e) {
______JOptionPane.showMessageDialog(null , "Das ist keine Zahl " + " oder die wird hier nicht als solche verstanden!\n" + e.toString ( ) ) ;
__}
______}
}

Die 3te Aufgabe sollte eine Gruppenarbeit sein. Am Tag der Kontrolle werden wir bestimmt in 3 Gruppen aufgeteilt. Da wir alle Hilfsmitteln außer Handy und Internet benutzen dürfen habe ich mit dem Freund alle 3 Gruppen ABC gelöst. Package 3 heißt somit Geometrie und beinhaltet die 3 Klassen Dreieck, Kreis und Rechteck. Ich bin mir sicher dass ich alles gemacht habe was der Freund sagte aber trotzdem gibt es da einen Fehler. Zum Beispiel bei Dreieck (was aus 3 Punkten besteht) wird mir die public Punkt a; public Punkt b und public Punkt c angestrichen. Heißt es dass ich noch eine Klasse die Punkt heißt machen soll? Ja oder?

Wie ich gehört habe dürfen wir bei dem Test alles benutzen außer Handy und Internet. Was meinst du, ob es reicht die Programme auf Stick zu ziehen?
clip_image001.gif
Oder gibt es deiner Meinung nach noch Zusatzwissen die ich wissen sollte für eine vier?

Es sind diese 3 Aufgaben hier:
 
Zuletzt bearbeitet:
Den Datentyp "Punkt" gibts so ja nicht, da musst du dir wohl was überlegen was sich zur Repräsentation eignet.

Ich würde hier zu Ganzzahlen greifen aber da ich keine Ahnung habe was ihr schon behandelt habt und was ihr benutzen dürft (ich find die Aufgabenstellung im Vergleich zu denen an meiner Uni recht unpräzise) solltest du dich da wohl mit deinem Übungstutor abstimmen.
 
Es gibt aber die Klasse "Point". Vielleicht hat er auch "Punkt" schon selbst geschrieben. Jedenfalls denke ich mir, dass das unterstrichen ist, weil es so gut wie nie Sinn macht sowas public zu machen. Da ist ja die ganze Datenkapselung weg...

Aber genau sagen kann dir das vermutlich nur der Unterstreicher. 🙂
 
Punkt habe ich schon selbst geschrieben.
Nun ist gesagt worden, dass der Test nun doch auf keinem Fall am Computer statfinden soll sondern per Hand auf Papier.
Wir sollten Modelling und UML unbedingt verstehen, besonders den Quelltext Get-Set Modelling und warum man private und warum man public verwenden sollte. Alles Verständnisfragen.

Wisst ihr wo man relevanten Verständnisfragen findet?


EDIT (autom. Beitragszusammenführung):


ach ja, der Fehler ist übrigens jetzt behoben. Ich hatte vergessen auf "Run" zu drücken
 
Zuletzt bearbeitet:
Naja, das sind alles Fragen, die man eigentlich schon weiß, wenn mans verstanden hat. UML-Diagramme musst du einfach auswendig kennen. Aber Getter & Setter gehören genauso wie die Bezeichner public und private zur Datenkapselung bei objektorientierter Programmierung.

Ich kann dir einzelne Fragen beantworten, aber eine Liste mit Fragen die dir evtl. helfen könnten, kenne ich nicht.

Edit: mit Fragen zu Java. Die sind aber schon ziemlich heftig. Soll heißen, wenn du die drauf hast bist du für deine Prüfung bestens gerüstet.
 
ja genau, wenn man das selbst nicht kann, dann immer auf überheblich tun im Ton "das sind alles Fragen die man eigentlich schon weiß"
 
Du glaubst ich kann das nicht, weil ich dir nicht die Lösung vor predige? 😉

Sorry, aber genau das ist nun mal die Definition von Verständnisfragen. Wenn du die Antworten nicht kennst zeigt das ziemlich deutlich, dass du das nicht verstanden hast. Antworten auswendig lernen hilft da auch nicht viel...

Beispiel modifier (private, public ...): Wenn du Datenkapselung verstanden hast erklärt sich von selbst, dass man auf bestimmte Teile eben nicht von überall aus zugreifen kann. Dementsprechend muss man das im Quelltext ja irgendwie kennzeichnen. Und genau dafür gibts private / public / protected. Daraus folgt dann wieder die Notwendigkeit von Gettern & Setter Methoden, mit denen ein kontrollierter Zugriff auf private Attribute möglich gemacht wird.

Ich kann mich nur nochmal wiederholen: Ich kann dir einzelne Fragen beantworten, aber ich werde dir garantiert keinen Fragenkatalog mit Antworten erstellen, die du dann auswendig lernen kannst.
 

Online-Statistiken

Zurzeit aktive Mitglieder
1
Zurzeit aktive Gäste
34
Besucher gesamt
35

Beliebte Forum-Themen

Zurück
Oben Unten