ZeugnisProgramm

xyxy

Mitglied
Hallo, ich bin Java Anfänger, ich lese gerade das Buch "Java als erste Programmiersprache".
Ich bin gerade auf Seite 150, oder so ähnlich.
Ich studiere nicht und bin reiner Hobbyprogrammierer in den Anfängen!!!
In diesem Programm komm ich im Moment nicht weiter!!!!!!!!!
Meine Fragen:
Was muss ich bei Cmd eingeben um mein Javaprogramm, bestehen aus einer Hauptklasse und einer zweiten Klasse, zu compelieren?????(Ich benutze das Jdk 1.6.0_21. Ich habe mir bereits eine Umgebungsvariable erstellt, um mit dem Befehl "javac" zu kompellieren. Programme die nur aus einer Hauptklasse bestehen konnte ich schon Kompellieren.
Das Hauptproblem: Was ist in meinem Quellcode falsch, bitte korrigierten Quellcode posten!!!!!!!!!!

Dies ist mein Programm:


Java:
//Datei: Fächer.java

public class Fächer
{
Byte y;
 privat String[] Fach = new String [y];

pubic byte gety()
{
return y;
}


pubic string getFach()
{
return Fach [];
}


}


Java:
//Datei: ZeugnisProgramm.java

import java.util.Scanner;



public class ZeugnisProgramm
{
public static void main (String args[])
{
						//hier kommen die Varriablen hin
String name;
String nameÄndern = "0";
Fächer f1 = new Fächer;






Scanner eingabe = new Scanner (System.in);			//Scanner zum einlesen der Tastatur



								//Ab hier geht das Programme los

do
{
System.out.println ("\nBitte geben sie ihren Vornamen ein:");
System.out.println ("\nIhr Vorname: ");
name = eingabe.next();							//eingeben des namens
System.out.println ("\nSie haben diesen Vorname eingegeben: " + name);
System.out.println ("\nMoechten sie den Namen aendern???");
System.out.println ("\nJa: So geben sie \"Ja\" ein.");
System.out.println ("\nNein: So geben sie \"Nein\" ein.");
nameÄndern = eingabe.next();
}
while (nameÄndern.equals ("Ja") || nameÄndern.equals ("ja"));		//Schleife die erst am Ende die Bedingung überprüft bei false wird wiederholt

System.out.println ("\nHallo " + name + " !!!");
System.out.println ("\n" + name + ", wir werden nun dein Zeugnisdurchschnitt berechnen.");
System.out.println ("\nWieviele Fächer hast du???");
System.out.println ("\nAnzahl der Fächer: ");
f1.sety = eingabe.next();
}
}


Danke!!!:rtfm:???:L???:L???:L???:L:mad::mad::roll::roll::roll:
 
Zuletzt bearbeitet von einem Moderator:

XHelp

Top Contributor
Das Hauptproblem ist die Aufmachung deines Posts!!!!einseinself
Ließ doch genau was du geschrieben hast: "pubic" und "privat". Das heißt "public" und "private". Aber auf diese Fehler sollte dich auch der Compiler hingewiesen haben. Außerdem ist y doch gar nicht mit einem Wert belegt.
 
S

SlaterB

Gast
[c]f1.sety = eingabe.next();[/c]
->
[c]f1.sety(eingabe.next());[/c]
noch gibts aber gar nicht so eine Methode
 

xyxy

Mitglied
So nun habe ich es verbessert, aber er meckert bei return Fach []; warum????????
Hier die überarbeitung:

Java:
 import java.util.Scanner;
//Datei: Fächer.java

public class Fächer
{
Byte y;
 private String[] Fach = new String [y];

public byte gety()
{
return y;
}


public string getFach()
{
return Fach [];
}
}



//Datei: ZeugnisProgramm.java





public class ZeugnisProgramm
{
public static void main (String args[])
{
						//hier kommen die Varriablen hin
String name;
String nameÄndern = "0";
Fächer f1 = new Fächer () ;






Scanner eingabe = new Scanner (System.in);			//Scanner zum einlesen der Tastatur



								//Ab hier geht das Programme los

do
{
System.out.println ("\nBitte geben sie ihren Vornamen ein:");
System.out.println ("\nIhr Vorname: ");
name = eingabe.next();							//eingeben des namens
System.out.println ("\nSie haben diesen Vorname eingegeben: " + name);
System.out.println ("\nMoechten sie den Namen aendern???");
System.out.println ("\nJa: So geben sie \"Ja\" ein.");
System.out.println ("\nNein: So geben sie \"Nein\" ein.");
nameÄndern = eingabe.next();
}
while (nameÄndern.equals ("Ja") || nameÄndern.equals ("ja"));		//Schleife die erst am Ende die Bedingung überprüft bei false wird wiederholt

System.out.println ("\nHallo " + name + " !!!");
System.out.println ("\n" + name + ", wir werden nun dein Zeugnisdurchschnitt berechnen.");
System.out.println ("\nWieviele Fächer hast du???");
System.out.println ("\nAnzahl der Fächer: ");
f1.sety (eingabe.next());










}
}
 

XHelp

Top Contributor
Bemühe dich doch bitte um etwas Anstand. Es sind nur knapp 90 Minuten seit der Frage vergangen. Wenn jemand das Bedürfnis zu antworten verspührt, dann wird er dies schon machen.
 

xyxy

Mitglied
Danke, funktioniert aber noch nicht ganz!!!!!!!!!
Er gibt noch diese Fehler bei diesem Code aus:
Code:

Java:
import java.util.Scanner;
import java.language.String;

//Datei: Fächer.java

public class Fächer
{
Byte y;
 private String[] Fach = new String [y];

public byte gety()
{
return y;
}


public String getFach()
{
    return Fach;
}
}



//Datei: ZeugnisProgramm.java





public class ZeugnisProgramm
{
public static void main (String args[])
{
						//hier kommen die Varriablen hin
String name;
String nameÄndern = "0";
Fächer f1 = new Fächer () ;






Scanner eingabe = new Scanner (System.in);			//Scanner zum einlesen der Tastatur



								//Ab hier geht das Programme los

do
{
System.out.println ("\nBitte geben sie ihren Vornamen ein:");
System.out.println ("\nIhr Vorname: ");
name = eingabe.next();							//eingeben des namens
System.out.println ("\nSie haben diesen Vorname eingegeben: " + name);
System.out.println ("\nMoechten sie den Namen aendern???");
System.out.println ("\nJa: So geben sie \"Ja\" ein.");
System.out.println ("\nNein: So geben sie \"Nein\" ein.");
nameÄndern = eingabe.next();
}
while (nameÄndern.equals ("Ja") || nameÄndern.equals ("ja"));		//Schleife die erst am Ende die Bedingung überprüft bei false wird wiederholt

System.out.println ("\nHallo " + name + " !!!");
System.out.println ("\n" + name + ", wir werden nun dein Zeugnisdurchschnitt berechnen.");
System.out.println ("\nWieviele Fächer hast du???");
System.out.println ("\nAnzahl der Fächer: ");
f1.sety (eingabe.next());










}
}

Fehler hat gesagt.:
ZeugnisProgramm.java:6: class Fächer is public, should be declared in a file nam
ed Fächer.java
public class Fõcher
^
ZeugnisProgramm.java:2: package java.language does not exist
import java.language.String;
^
ZeugnisProgramm.java:19: incompatible types
found : java.lang.String[]
required: java.lang.String
return Fach;
^
ZeugnisProgramm.java:68: cannot find symbol
symbol : method sety(java.lang.String)
location: class Fächer
f1.sety (eingabe.next());
^
4 errors
Drücken Sie eine beliebige Taste . . .
 

Runtime

Top Contributor
1. Die Datei muss gleich wie die Klasse heissen
2. Das Package java.language gibt es nicht, es heisst java.lang und wird automatisch importiert, womit du die Zeile löschen kannst.
3. In der Methode getFach wird angegeben, dass ein String zurückgegeben wird, du willst aber einen String[] zurückgeben. Du musst den Returntype ändern oder einen Wert aus dem Array wählen.
4. Die Methode sety existiert nicht. Die muss du noch erstellen.
 

Runtime

Top Contributor
@XHelp
Kann auch sein..
@xyxy
Du musst für jede Klasse, die public ist eine eigene Datei erstellen. Benutzt du eine IDE? Würde ich dir raten, dann wäre auch der Source Code richtig formatiert.
 
T

Tomate_Salat

Gast
Ich habe eher den Verdacht, dass der gezeigte Code komplett in einer Datei liegt.

Nope, laut seinen kommentaren nicht.

Fächer? Umlaute sind ziemlich hässlich und ich wäre mir nichtmal sicher, ob das nicht iwann zu Problemen führt. Wenn deutsch, dann verwende lieber [c]Faecher[/c] und bleib im UTF-8 raum (oder am besten gleich Englisch).

Naja, nimm das als konstruktive Kritik: Die Schriftgröße/farbe/formatierung führen nicht zu schnelleren Antworten. Auch solche Posts: "bitte um Antwort!!!" führen wohl eher zum gegenteiligen Effekt, sofern du konstruktive Antworten haben willst ;-)

MFG

Tomate_Salat
 

XHelp

Top Contributor
Nope, laut seinen kommentaren nicht.
Aber laut der Fehlermeldung schon:

ZeugnisProgramm.java:6: class Fõcher is public, should be declared in a file nam
ed Fõcher.java
public class Fõcher
^
ZeugnisProgramm.java:2: package java.language does not exist
import java.language.String;
^
ZeugnisProgramm.java:19: incompatible types
found : java.lang.String[]
required: java.lang.String
return Fach;
^
ZeugnisProgramm.java:68: cannot find symbol
symbol : method sety(java.lang.String)
location: class Fõcher
f1.sety (eingabe.next());
^

Dabei stimmen die Zeilenangaben 1zu1 mit dem gepostetem. Und irgendwie vertraue ich mehr dem Compiler.
 
T

Tomate_Salat

Gast
@XHelp: die compiler-meldungen habe ich übersehen. Habe das hier zufällig gesehen gehabt
Java:
//Datei: Fächer.java

ok. Scheinst doch recht zu haben :-/
 

xyxy

Mitglied
Also ich hatte die beiden erst, in zwei Datein, da ich aber nicht wusste wie ich dem Kompiler sage, dass er beide Kompelliert, habe ich sie in eine getan!!!!!!!!!!!!
 

Final_Striker

Top Contributor
z.B beide Dateien liegen unter C:\Java

kompilieren:

C:\Java>javac Klasse1.java Klasse2.java

ausführen, wenn die main-Methode sich in der Klasse1 befindet.

C:\Java>java Klasse1
 

timbeau

Gesperrter Benutzer
Also ich hatte die beiden erst, in zwei Datein, da ich aber nicht wusste wie ich dem Kompiler sage, dass er beide Kompelliert, habe ich sie in eine getan!!!!!!!!!!!!

Ich könnte noch diesen Link empfehlen, hilft ungemein und andere sehen einen nicht als ungehobelten Trampel an:
Der neue große Knigge: Gutes Benehmen und richtige Umgangsformen: Amazon.de: Silke Schneider-Flaig: Bücher


Konkret reicht 1 Satzzeichen pro Satzende, eine Schriftgröße und als Schriftfarbe schwarz.
 
A

AntwAntwort

Gast
Ich könnte noch diesen Link empfehlen, hilft ungemein und andere sehen einen nicht als ungehobelten Trampel an:
Der neue große Knigge: Gutes Benehmen und richtige Umgangsformen: Amazon.de: Silke Schneider-Flaig: Bücher


Konkret reicht 1 Satzzeichen pro Satzende, eine Schriftgröße und als Schriftfarbe schwarz.

hat er bei seite 150 erst angefangen zu lesen?

zuerst überlegen, was alles gemacht werden soll. durchschnittsberechnung, mehrere werte einlesen, addieren und dividieren, dann das ergebnis ausgeben. das einlesen ist schon gar nicht so unkompliziert. einfachheithalber kann alles in der main-methode geschrieben werden. dann muss man sich nur noch über lokale variablen gedanken machen und über System.in und System.out.

Java:
public class Haupt { // Klassendeklaration

public static void main(String[] args) { // Programmeinstiegspunkt, statische Methode, mit args als Parameter, das Kommandozeilenargumente

  BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // liest zeilenweise von der Eingabe, besteht aus einem InputStreamReader, der wiederum auf dem InputStream System.in aufbaut

  String strVar; // Variabledeklaration, dieser kann das Ergebnis der Methode br.readLine() zugewiesen werden
  int intVar; // dieser Variable kann das Ergebnis der statischen Methode Integer.valueOf(strVal) zugewiesen werden

  // uws.

} // Ende Methodenrumpf der main-Methode

}
 

xyxy

Mitglied
Könnte es mal jemand in den Quellcode schreiben?
Faecher Datei:

Java:
//Datei: Faecher.java

public class Faecher
{
Byte y;
 private String[] Fach = new String [y];

public byte gety()
{
return y;
}


public String[] getFach()
{
    return Fach;
}
}

Datei ZeugnisProgramm:

Java:
//Datei: ZeugnisProgramm.java



import java.util.Scanner;

public class ZeugnisProgramm
{
public static void main (String args[])
{
						//hier kommen die Varriablen hin
String name;
String nameÄndern = "0";
Faecher f1 = new Faecher();






Scanner eingabe = new Scanner (System.in);			//Scanner zum einlesen der Tastatur



								//Ab hier geht das Programme los

do
{
System.out.println ("\nBitte geben sie ihren Vornamen ein:");
System.out.println ("\nIhr Vorname: ");
name = eingabe.next();							//eingeben des namens
System.out.println ("\nSie haben diesen Vorname eingegeben: " + name);
System.out.println ("\nMoechten sie den Namen aendern???");
System.out.println ("\nJa: So geben sie \"Ja\" ein.");
System.out.println ("\nNein: So geben sie \"Nein\" ein.");
nameÄndern = eingabe.next();
}
while (nameÄndern.equals ("Ja") || nameÄndern.equals ("ja"));		//Schleife die erst am Ende die Bedingung überprüft bei false wird wiederholt

System.out.println ("\nHallo " + name + " !!!");
System.out.println ("\n" + name + ", wir werden nun dein Zeugnisdurchschnitt berechnen.");
System.out.println ("\nWieviele Fächer hast du???");
System.out.println ("\nAnzahl der Fächer: ");

public void sety
{
f1.sety (eingabe.next());
}








}
}
Danke!!!
 

xyxy

Mitglied
Mit y soll die Anzahl der Fächer sein, die man hat!
Jadem Fach soll man dann später eine Note zuordnen können, das programmiere ich aber noch!
 

Spitfire777

Bekanntes Mitglied
Ich würde dir zum Java lernen ein paar Sachen raten:

Ich weiß noch wie man bei mir das Lernen einer Sprache durch Entwickeln ohne Entwicklungsumgebung geraten hat. Andere mögen das anders sehen wie ich, jedoch hat mir das geholfen, am Ball zu bleiben. Syntaxfehler werden z.b. sofort markiert und in Sachen Codeform unterstützt eine IDE ebenfalls ein bisschen. So ist man als Anfänger bei der Fehlersuche eben nicht nach jedem korrigierenden Tastendruck dabei, alle 2 Sekunden zu kompilieren und man kommt dadurch eben nicht vorwärts.

Lade dir daher am Besten eine IDE runter, wie z.b. Eclipse oder NetBeans.

Zum späteren Ausdauertraining kannst du ja das gelernte dann weiter mit dem Editor + manuelles Kompilieren vertiefen. Das ist durchaus von Vorteil, da man, wenn man nur mit der IDE lernt, zu schnell von dem eben frisch gelernten zum nächsten überspringt, ohne es ausreichend vertieft zu haben.
 

Final_Striker

Top Contributor
Mit y soll die Anzahl der Fächer sein, die man hat!
Jadem Fach soll man dann später eine Note zuordnen können, das programmiere ich aber noch!

Und wieso nennst du sie nicht einfach anzahlFaecher anstatt mit einem nichtssagendem y ?!

Java:
public class Faecher {

	private String[] fach;

	public Faecher(int anzahl) {
		fach = new String[anzahl];
	}

	public int getAnzahl() {
		return fach.length;
	}

	public String[] getFach() {
		return fach;
	}

}
 
A

AntwAntwort

Gast
@xyxy:
wenn wir die aufgabe machen, hast du nicht mehr die möglichkeit, selbst auf eine lösung zu kommen.
wenn andere dir helfen sollen und auch später im team mal, wenn andere deinen code lesen sollen, ist es umso wichtiger, aussagekräftige variablennamen zu wählen, die möglichst auch noch konformgemäß sind.

Ich weiß noch wie man bei mir das Lernen einer Sprache durch Entwickeln ohne Entwicklungsumgebung geraten hat.

@Spitfire777:
das ausprobieren mit der IDE mag die sache vereinfachen, die grundkenntnisse kann man sich aber auch mit von IDE-en generierten fehlermeldungen zur übersetzungszeit nicht aneignen und diese ersetzen ebenfalls nicht die buchlektüre. wohingegen die arbeit mit einfachem texteditor verständnis für die tools schafft.

Scheint ja in Mode zu kommen unangemeldet hier zu posten. Registrieren ist garnicht so schwer ;)

das geht leider nicht, denn ich bin suchmaschinenscheu. ;)
 

Neue Themen


Oben