Frage zu eclipse

Hallo,

bin noch Anfänger mit eclipse und möchte gern ein kleines Rechnerprogramm schreiben. Mit den Befehlen system.out.print und system.out.println geb ich was aus, wo is der unterschied zwischen den beiden und was heißt identifier wurde erwartet? zahl1 und zahl2 sind rot und der punkt nach .out.

import java.util.Scanner;

public class Test {

public static void main (String [] args) {

double Rechner=1; double Zahl1=1; double Zahl2=1; double Ergebnis=1; }

Scanner sc = new Scanner(System.in);

System.out.println("Zahl1"); 

System.out.println(“Zahl2”);}

System.out.println fügt im Gegensatz zu System.out.print einen Zeilenumbruch ein.
Vergleiche mal

System.out.println("B");
System.out.println("C");```
mit
```System.out.print("A");
System.out.print("B");
System.out.print("C");```
Ausgabe beim ersten Beispiel:

A
B
C


und beim zweiten:

ABC



Wegen dem Fehler in deinem Code:
Du hast in der Zeile
```double Rechner=1; double Zahl1=1; double Zahl2=1; double Ergebnis=1; }```
hinten eine schließende schweifende Klammer } drinnen, und das bedeutet, dass dort die main-Methode beendet wird und muss somit weg. Zudem fehlt hinten "}" zum Schließen des class-Blocks.
In Eclipse wird übrigens die Code-Formatierung (Einrückungen, ...) "verbessert", wenn du zwischendurch den Tastenkürzel <Strg>-<Shift>-<F> drückst.

Was noch wichtig ist: In Java werden **alle Variablennamen kleingeschrieben** (sowie Package-Namen) und, wie du es auch richtig gemacht hast, alle Klassennamen groß.
Also müssten deine Variablennamen wiefolgt heißen: rechner, zahl1, zahl2, ergebnis

So ist der korrekte Code:
```import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		double rechner = 1;
		double zahl1 = 1;
		double zahl2 = 1;
		double ergebnis = 1;

		Scanner sc = new Scanner(System.in);

		System.out.println("Zahl1");
		System.out.println("Zahl2");
	}
}```

Gruß,
pcworld
PS: Den Java-Code am besten immer in ```-Tags einschließen, dann ist er besser lesbar :-)

danke für die Antwort!!

also den rechner1 bräuchte ich eigentlich nicht und um zahlen addieren bzw. subtrahieren zu können reicht es da wenn ich ergebnis= zahl1 + zahl2; schreib? bei mir is zahl2 rot

Hi,

bitte mal den ganzen Code posten, sonst kann man nicht sagen wo der Fehler liegt.

import java.util.Scanner;

public class Test {

public static void main (String [] args) { 

double Zahl1=1; double Zahl2=1; double Ergebnis=1;

Scanner scanner = new Scanner(System.in); }
private int Zahl1; 

private int Zahl2; 

private int Ergebnis;  
{

while (Zahl1 >= 0)
while (Zahl2 >=0)
while (Ergebnis >=0)
Ergebnis=Zahl1 + Zahl2;
System.out.print(“Zahl1 eingeben:”);
System.out.print(“Zahl2 eingeben:”);

}
}

will nur ein kleines Rechenprogramm

Bei mir wird da kein Fehler angezeigt.
Übrigens, noch aus meinem letzten Beitrag:

Außerdem solltest du deinen Code hier im Forum in „[ java]Dein Code```“ (ohne Leerzeiche nach dem ersten „[“, musste ich nur machen, damit der das nicht parst) einschließen, damit er besser lesbar ist! :slight_smile:

Gruß,
pcworld

Bei dir ist echt kein Fehler? ich hab Eclipse 3.4.2

Die lokalen Variablen zahl1 zahl2 scanner werden nie gelesen.

So siehts aus:

du machst den Fehler und definierst Zahl1 in der main und Zahl1 in der Klasse und auf Zahl1 greifst du in den anderen Methoden zu.
Außerdem liest du mit dem Scanner nix ein, du erzeugst ihn und mehr nicht.

Dies ist eine korrekte Version des Codes:


public class Test {

	private int zahl1;
	private int zahl2;
	private int ergebnis;

	public static void main(String[] args) {
		new Test().los();
	}

	public void los() {
		zahl1 = 1;
		zahl2 = 1;
		ergebnis = 1;

		//Der Scanner wird von dir nicht benutzt
		//Scanner scanner = new Scanner(System.in);
	}

	{
		while (zahl1 >= 0)
			while (zahl2 >= 0)
				while (ergebnis >= 0)
					ergebnis = zahl1 + zahl2;
		System.out.print("Zahl1 eingeben:");
		System.out.print("Zahl2 eingeben:");

	}
}```

Jetzt habe ich mal ein Frage :-):
So etwas habe ich noch nie gesehen, was bedeutet das? Ist das eine Art main-Methode ohne Namen oder wie?
```	{
		while (zahl1 >= 0)
			while (zahl2 >= 0)
				while (ergebnis >= 0)
					ergebnis = zahl1 + zahl2;
		System.out.print("Zahl1 eingeben:");
		System.out.print("Zahl2 eingeben:");

	}```

Gruß,
pcworld

Das ist einfach nur Code, der genauso wie die Deklarationen der privaten Klassenvariablen direkt nach dem Erzeugen der Klasse ausgeführt wird. D.h. nach dem new Test() und vor dem .los() müsste man meiner Ansicht nach in eine Endlosschleife kommen.

stimmt so nicht ganz…

alle Bezeichner werden in CamelCase Art geschrieben, d.h. neu anfangende Woerter haben immer als erstes einen grossbuchstaben.

bei Variablen & methoden & packages faengt man aber mit einem kleinbuchstaben an, bei Klassen mit einem Grossbuchstaben.

bsp:

public class ASimpleClass {
 int aSimpleVariable
 
 public int aSimpleMethod(int aParameter) {
    // ...
 }
}

[QUOTE=deathbyaclown]stimmt so nicht ganz…

alle Bezeichner werden in CamelCase Art geschrieben, d.h. neu anfangende Woerter haben immer als erstes einen grossbuchstaben.

bei Variablen & methoden & packages faengt man aber mit einem kleinbuchstaben an, bei Klassen mit einem Grossbuchstaben.

bsp:

public class ASimpleClass {
 int aSimpleVariable
 
 public int aSimpleMethod(int aParameter) {
    // ...
 }
}
```[/QUOTE]
Naja, so habe ich es gemeint... ;)

[QUOTE=Revenant;9012]Das ist einfach nur Code, der genauso wie die Deklarationen der privaten Klassenvariablen direkt nach dem Erzeugen der Klasse ausgeführt wird. D.h. nach dem new Test() und vor dem .los() müsste man meiner Ansicht nach in eine Endlosschleife kommen.[/QUOTE]
Also ein Konstruktor oder wie?

Gruß,
pcworld

Der Code wird halt immer vor dem Konstruktor aufgerufen (auch unabhängig vom verwendeten Konstruktor). Aber für was man das brauchen können soll weiß ich auch nicht :slight_smile: .

Es gibt ja nur relativ wenig Blödsinn in Java, finde ich, aber manchen gibt es so wie es aussieht doch… :slight_smile:

Gruß,
pcworld

hust es gibt (leider) verdammt viel Bloedsinn in Java… leider

Was z. B. denn noch?

Was mich schon stört, dass man z. B. bei if-Anfragen mit einer Zeile Code-Ausführung die geschweiften Klammern weglassen kann… Aber was ich sehr arg mag, dass schon beim kleinsten Syntax-Fehler der Code nicht ausführbar ist. Wenn man das mal mit den Implementationen von HTML/JavaScript in den Browsern vergleicht, ist bei Java alles super, und ich hoffe mal, dass es nie wie HTML/JavaScript enden wird…
Kurz gesagt: Nenne mir mal eine für fast jedermann bekannte Website, die validen HTML-Code enthält - geschweigedenn XHTML 1.1 oder HTML Strict! :hust:
Schaut euch mal den Doctype von der Google-Startseite an, da ist es schon fast sinnvoller, den Doctype ganz wegzulassen…: <!doctype html>

Gruß,
pcworld

ich meinte eher die API generell…

seien es Date, Stack, Point, SQL oder konsorten - das API design ist leider nicht immer geglueckt und dank der backward compatibilty philosophie auch nicht aenderbar.

Das Ergebnis ist dass neue features hinzukommen, die z.t. alte Fehler ausbuegeln sollen, dadurch wird die API groesser, komplexer und schwerer zu verstehen.

Des weiteren gibt es konzeptionelle Schwaechen (jedenfalls meiner ansicht nach)… allein schon dass Java sich objektorientiert nennt, dann aber primitive datentypen hat und man dann das ganze geschlamps mit den Wrappern hat.

etc

naja debac ich glaub die ganzen Sachen sind eigentlich zu verkraften, wenn du mal ne schreckliche API sehen willst nimm .NET :wink:
0 Abwärtskompatibel
voll mit Bugs
teilweisle grottig designt

Die haben zwar Objekte für die primitiven Datentypen aber Casten darfst du sie nicht.
Schönes Beispiel:
Methode gibt ein Object zurück, das Object ist ein long
Ich will ein int also mach ich direkt einen Cast zum int → ClassCastException
Erst muss ich es in eine long Variable speichern DANN darf ich es in ein int casten :wink:

„Herr Richter, wieso wollen sie mich verurteilen des Mordes - ich habe doch nur einmal feste geschlagen, der da druebern hat hundertmal mit dem Messer zugestochen“.

Schlecht bleibt schlecht, egal ob es noch schlimmere gibt…

:stuck_out_tongue_winking_eye:

hehe stimmt schon :wink:
nur ich find die Sachen eigentlich nicht so schlimm, es gibt leider nicht die perfekte Sprache/Sache