Zahlen eingeben

Stimo89

Mitglied
hallo zusammen

das ist mein erstes mal hier im forum. Ich bin seit August letztes Jahr Informatik Lehrling und habe seit August das erste mal mit Java gearbeitet, also zu erst mit JavaKara und jetzt mit Eclipse. Ich muss zugeben das ich mich bis jetzt wenig mit Java beschäftigt habe und darum noch sehr unerfahren dabei bin.
Ich habe letzte Woche einige Übungen bekommen die ich versuchen sollte zu lösen. Nun da ich eben mich zu wenig damit beschäftigt habe weiss ich nicht weiter oder besser wie ich die eine Übung lösen kann.

Die Übung sagt folgendes:
Geben sie 10 ganze Zahlen im positiven oder negativen Bereich ein:
5, 15, -20, 33, -10, -5, 45, 25, 12, -60
Am Ende wird die Summe der positiven und negativen Zahlen ausgegeben:
pos. 135 neg. -95

Tipp:
Nach der Eingabe jeder einzelnen Zahl wird zur jeweiligen Summe direkt addiert. Die 10 Zahlen müssen nach Ablauf des Programms nicht mehr verfügbar sein.

Ich sollte es mit einer for-schleife lösen.

Ich habe bis jetzt dies geschrieben, aber ich denke ich bin auf dem falschen Weg.:oops:



public static void main(String[] args) {
System.out.println("Gebe 10 positive und negative Zahlen ein: ");
Scanner eingabe1 = new Scanner(System.in);
int zahl1 = eingabe1.nextInt();
int zahl2 = eingabe1.nextInt();
int zahl3 = eingabe1.nextInt();
int zahl4 = eingabe1.nextInt();
int zahl5 = eingabe1.nextInt();

for (int w=1; w<=zahl1; w++){;
System.out.println(zahl1 + zahl2 + zahl3 + zahl4 + zahl5);

}
}
}


noch was, wenn ich hier im falschen Forum Bereich bin, sagt mir das. danke!
 
Zuletzt bearbeitet von einem Moderator:

Deros

Bekanntes Mitglied
code immer in javatags also so:

Java:
public static void main(String[] args) {
System.out.println("Gebe 10 positive und negative Zahlen ein: ");
Scanner eingabe1 = new Scanner(System.in);
int zahl1 = eingabe1.nextInt();
int zahl2 = eingabe1.nextInt();
int zahl3 = eingabe1.nextInt();
int zahl4 = eingabe1.nextInt();
int zahl5 = eingabe1.nextInt();

for (int w=1; w<=zahl1; w++){;
System.out.println(zahl1 + zahl2 + zahl3 + zahl4 + zahl5);

}
}
}
 
N

nillehammer

Gast
Ja, komplett auf dem Holzweg. Versuche, den Aufgabentext in Teilschritte zu zerlegen, die Du dann in Code gießt. Dazu musst Du die Aufgabe auch etwas genauer lesen.
1. Zahlen einlesen: Kannst Du mit 10 Variablen machen, aber hier hast Du wiederkehrenden Code, eine Schleife bietet sich an. Eine Abbruchbedingung hast Du auch, nämlich 10 eingelesene Zahlen.
2. Die Summen: Hier steht, Du sollst jeweils die positiven und die negativen Zahlen addieren, nicht alle zusammen. Weiters steht, dass die Eingaben egal sind, nur die Summen sind wichtig. Hört sich nach zwei (und nicht 10) Variablen an, die Du Dir merken musst, eine für die positive Summe, eine andere für die negative Summe.
2a) Du musst offensichtlich erkennen, zu welcher der beiden Variablen Du addieren musst. Hier hast du eine Fallunterscheidung (Stichwort if).

Ergo: mit drei Variablen (zwei für die Summen, eine für die aktuelle eingabe), einer for-Schleife und darin einer if-Verzweigung kann man das Problem lösen. Scanner und System.out.println hast Du übrigens richtig verwendet.
 
Zuletzt bearbeitet von einem Moderator:

ARadauer

Top Contributor
mit einer for schleife macht man etwas öfter.. das ist dazu dar dass du nicht 10 mal die zahl einlesen musst... also mach dir eine summe mit 0 ausserhalt der vor schleife, innerhalt der vorschleife ließt du dann die zahl ein und addierst sie zur summe, nach der vor schleife gibts du die summe aus..
 

Stimo89

Mitglied
jungs ich hab euch gesagt ich bin ein noob, aber ich möchte es sicher verstehen.
ist das untere soweit richtig?
ich weiss dann nicht was ich mit der for-schleife anfangen muss.

Java:
		System.out.println("Gebe 10 positive und negative Zahlen ein: ");
		Scanner eingabe1 = new Scanner(System.in);
		int pos = eingabe1.nextInt();	
		
		Scanner eingabe2 = new Scanner(System.in);
		int neg = eingabe2.nextInt();
		
		Scanner eingabe3 = new Scanner(System.in);
		int akteing = eingabe3.nextInt();
 
N

nillehammer

Gast
jungs ich hab euch gesagt ich bin ein noob, aber ich möchte es sicher verstehen.
ist das untere soweit richtig?
ich weiss dann nicht was ich mit der for-schleife anfangen muss
Ok, dann Schrittweise. Fangen wir erstmal mit dem Einlesen an.
1. Du brauchst nur den Scanner eingabe1 ganz am Anfang. Lösche die anderen und verwende nur den ersten. Das hattest Du am Anfang schon richtig.
2. Wenn Du Dir Deinen Code unten anschaust, wird Dir sicherlich auffallen, dass Du drei Mal praktisch dasselbe machst:
Code:
int pos = eingabe1.nextInt();
Hier liest Du eine Eingabe und weist sie einer Variablen zu. Für Deine Aufgabe würdest Du das ganze 10 Mal machen müssen. Versuche im ersten Schritt, das mal in eine for-Schleife zu gießen, die 10 Mal durchlaufen wird. Und post den Code. Dann machen wir weiter...
 

Stimo89

Mitglied
Java:
			for (int w=0; w<10; w++){;

???


ich galub ich verstehe die for schleife nicht ganz. ich habs jetzt ein paar versuche gemacht aber nix.
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
und jetzt wartest du auf die Lösung? ....

HF.....

2 Zähler, funktionierende for-Schleife, 1 Scannerobjekt....

was hast du bereits davon?
 

Stimo89

Mitglied
Java:
	 System.out.println("Gebe 10 positive und negative Zahlen ein: ");
        Scanner eingabe1 = new Scanner(System.in);
        int pos = eingabe1.nextInt();
        
			for (int i=1; i<=10; i++){;
				System.out.print(i);
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
Es fehlen noch die beiden Zähler. Das Semikolon direkt nach der for-Schleife macht man nicht, es fehlt in deinem Code auch eine "}"

Überleg dir mal wie du es auf Papier machewn würdest, wenn dir ein Kumpel 10 Zahlen sagt und du die positiven addieren musst und die negativen...
 
N

nillehammer

Gast
Java:
eingabe1.nextInt();
Das ist doch das, was sich 10 mal wiederholen soll. D.h. das muss natürlich in die for-Schleife. Die Deklaration
Code:
int pos;
außerhalb ist dagegeb richtig.

@timbeau: Lass uns jetzt bitte erst mal die for-Schleife mit der Eingabe der 10 Zahlen machen, bevor wir die Zähler und den Rest einbauen.
 

Stimo89

Mitglied
Java:
	public static void main(String[] args) {
		System.out.println("Gebe 10 positive und negative Zahlen ein: ");
        Scanner eingabe1 = new Scanner(System.in);
        int pos = eingabe1.nextInt();
        
			for (int i=1; i<=10; i++){
				System.out.print("Zahl eingeben: " );
				pos = eingabe1.nextInt();
	}
  }
}
 

timbeau

Gesperrter Benutzer
Jo! Sieht gut aus. Jetzt erstmal int pos; statt int pos = ....

Die Eingabe findet in der Schleife statt, so würde sie 11x stattfinden. 1x vor der Schleife und 10x in der Schleife.

Jetzt die Weiterverarbeitung von pos.

Java:
if(pos ???) {
dann mache das
}
else {
mache dies
}
 

Stimo89

Mitglied
Java:
	public static void main(String[] args) {
		System.out.println("Gebe 10 positive und negative Zahlen ein: ");
        Scanner eingabe = new Scanner(System.in);
 
        int zahl;
			for (int i=1; i<=10; i++){
				System.out.print("Zahl eingeben: " );
				zahl = eingabe.nextInt();

	}
			if (zahl > 

  }
			System.out.print("Summe positiv: " + );
 }
 

JaninaSt

Aktives Mitglied
Du kannst dir noch zwei int anlegen, zum Beispiel int pos und int neg und beide mit 0 initialisieren.
Das ist dann für deine zwei Endergebnisse, also einmal die Summe der positiven, wie auch den negativen Zahlen.

Und dann kannst du in der if-Abfrageabfragen ob deine eingelesene Zahl > 0 ist, wenn ja zählst du das eingelesen immer zu pos dazu, ansonsten (else) zu neg.

Und wenn die for-Schleife durchgelaufen ist, kannst du die beiden Integer ausgeben lassen.
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Und auch hier wieder: Die Überprüfung und das zuaddieren zur richtigen Variable (pos oder neg) muss auch für jede eingegebene Zahl gemacht werden, also gehört auch das in die for-Schleife und nicht dahinter. Die Ausgabe der Endergebnisse muss dann nur einmal gemacht werden, das gehört dann also hinter die for-Schleife (Hast Du ja schon angefangen).
 

Stimo89

Mitglied
Java:
	public static void main(String[] args) {
		System.out.println("Gebe 10 positive und negative Zahlen ein: ");
        Scanner eingabe = new Scanner(System.in);
 
        int zahl , pos=0, neg=0;
			for (int i=1; i<=10; i++){
				System.out.print("Zahl eingeben: " );
				zahl = eingabe.nextInt();

			
			if (zahl > 0){
				zahl = pos;
			}
			else if (zahl < 0){
				zahl = neg;
			}

 }
}
}
 

JaninaSt

Aktives Mitglied
Es reicht nur else, statt else if. Weil wenn die Zahl nicht größer 0 ist, muss sie eh automatisch negativ sein. Das brauchst nicht nochmal prüfen.
 

JaninaSt

Aktives Mitglied
Und du willst ja nicht Zahl = pos zuweisen.... Da hättest du ja immer Null.
Du liest die Zahl ein und musst je nachdem ob positiv oder negativ, die aktuell eingelesen Zahl zu pos oder neg dazuzählen.

Überleg dir wie du es händisch rechnen würdest.
 

timbeau

Gesperrter Benutzer
Mensch, was ist das denn für ne Denkweise bei dir? Salamischeibchen-Code, je nachdem was grade hingeworfen wird. Du kannst doch mal 6 Zahlen dahinschreiben und die zusammenaddieren. Testen, prüfen usw.

Hier Zeile für Zeile ohne Sinn & Verstand und vor allem ohne Kommentar zu posten :noe:
 
N

nillehammer

Gast
Code:
zahl = pos;
Das ist genau falsch rum. In Java steht links immer die Variable, die einen Wert bekommen soll und rechts der Wert/die Variable mit dem Wert, der zugeweisen werden soll. Und noch ein Tipp: Für das Dazuaddieren und Zuweisen gibt es in Java einen kurz geschriebenen Operator
Code:
+=
 

Stimo89

Mitglied
hey jungs, ich kanns nicht. vielleicht hilft es mir wenn man mir die Lösung hinschreibt. sobald ich das if nach dem else wegnehme wird mir in ecplise einen fehler angezeigt. ich gibs auf.
 

JaninaSt

Aktives Mitglied
Bei else darfst dann nichts mehr in Klammer schreiben.

Code:
if(zahl >= 0){
  ...
}else{
  ...
}

Wenn die Zahl positiv ist wird das nach der if-Abfrage, sonst dass nach dem else ausgeführt.
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
Java:
int posZaehler = 0;
int negZaehler = 0;
int eingabe;
Scanner scanner = new Scanner(System.in);
for(.....) {
eingabe = scanner.nextInt();
if(eingabe >= 0) {
posZaehler += eingabe;
}
else {
negZaehler += eingabe;
}
}
//Print.out

BTW: Klammernsetzung sollte man beherrschen, das ist ja sicherlich nicht die erste Aufgabe
 

Stimo89

Mitglied
ach got ist das einfach! *schämm*

Java:
	public static void main(String[] args) {
		System.out.println("Gebe 10 positive und negative Zahlen ein");
        int zahl; 
        int pos=0; 
        int neg=0;
		Scanner eingabe = new Scanner(System.in);
			for (int i=1; i<=10; i++){
				System.out.print("Zahl eingeben: " );
				
				zahl = eingabe.nextInt();			
			if (zahl >= 0){
				pos += zahl;
			}
			else{
				neg += zahl;
			}			
			}			
			System.out.println("Summe positiv: " + pos);
			System.out.println("Summe negativ: " + neg);
}
}
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Stimo89 hat gesagt.:
ach got ist das einfach! *schämm*
Habbich doch gleich gesagt :D :D :D. Zitat aus meiner ersten Antwort: "Ergo: mit drei Variablen (zwei für die Summen, eine für die aktuelle eingabe), einer for-Schleife und darin einer if-Verzweigung kann man das Problem lösen."
 
Zuletzt bearbeitet von einem Moderator:

Stimo89

Mitglied
bin ich bei der Aufgabe richtig dran?

Aufgabe
Ein Zufallszahlen-Generator erzeugt 100 Zahlen von 1 bis 6. Ermitteln Sie, wie oft die Zahlen jeweils vorkommen. Geben Sie die Anzahl gewürfelter Einer, Zweier, Dreier, Vierer, Fünfer und Sechser aus.



Tipp:
Generieren Sie mittels einer For-Schleife die 100 Zufallszahlen. Innerhalb
der For-Schleife prüfen Sie, welche Zahl erzeugt wurde und zählen sie direkt zur jeweiligen Anzahl dazu. Die 100 Zufallszahlen müssen nach Ablauf des
Programms nicht mehr verfügbar sein.


Einer: 15
Zweier: 15
Dreier: 18
Vierer: 15
Fuenfer: 20
Sechser: 17

Java:
	public static void main(String[] args) {

		int zahl1, zahl2, zahl3; 
		int eingabe = 0;

		for(int i=0; i<1; i++){
        zahl1=(int)(Math.random() * (100 - 1) + 1);
		System.out.println("einer: " + zahl1);
        zahl2=(int)(Math.random() * (100 - 1) + 1);
		System.out.println("zweier: " + zahl2);
        zahl3=(int)(Math.random() * (100 - 1) + 1);
		System.out.println("dreier: " + zahl3);
		}

	}

}
 
N

nillehammer

Gast
Sach ma Stimo89, kannst du lesen und das Gelesene auch verstehen? Wieviele Zufallszahlen sollen erzeugt werden?
 

timbeau

Gesperrter Benutzer
A fool with a tool is just a fool.

Will sagen: "Java löst für dich keine Probleme"

1. Schritt ist der Algorithmus auf dem Zettel.

Wenn die Aufgabe ist, 100 Zahlen zu generieren, witfst du dann 3 Würfel 1x (oder auch keinmal) und der 1. Würfel ist ein Einer???

Erst denken, dann proggen
 

Neue Themen


Oben