PCMasters Hardware Forum > Software > GFX, Webdesign und Programmierung > Seite 5 > Mit Java for-Schleife mit ESC beenden

Im PC Forum registrieren


Produktsuche
IDEALO-PRODUKT-SUCHE
idealo preisvergleich
PCM News & Reviews
Antwort
 
 
Alt 03.12.2010, 14:44
Benutzerbild von GamEz
Threadersteller
GamEz
 
Standard

Mit Java for-Schleife mit ESC beenden



Hallo ich wollte bei java eine for-schleife beenden indem man esc drückt ich weis aber nicht wie

Gruß GamEz
Alt Heute
Hardware Bot
Computer Informationen
 
Diese Werbung wird registrierten
Mitgliedern nicht angezeigt.
Werden Sie noch heute kostenlos Mitglied
auf PCMasters.de
Standard Weitere Informationen

 
Alt 03.12.2010, 15:28
Benutzerbild von korni
korni
 
Standard

Willst du nur die Schleife Beenden oder das gesamte Programm?

Prinzipiell brauchst du da einen ActionListener mit dem du KeyPressed überprüfst und danach ob es sich um die Escape Taste handelt. Wenn du das gesamte Programm beenden willst dann kannst du ja einfach System.exit(0) aufrufen, willst du nur die schlaffe beenden, musst du in der Schleife abfragen ob exc gedrückt wurde (mit Hilfsvariable) und dann eben mit break, oder direkt eine while Schleife machen, was die bessere Methode wäre. ;D
 
Alt 03.12.2010, 15:33
Benutzerbild von GamEz
Threadersteller
GamEz
 
Standard

ich möchte die schleife beenden.
Das ist das Programm(Sollen wir für die Schule machen )

import java.io.*;

public class Eins {


public static void main(String[] args)throws IOException, InterruptedException{
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Hallo dies ist ein Programm mit dem man das kleine 1x1 üben kann.");
System.out.println("Du hast für jede Frage 5 sekunden Zeit, anschließend wirst du benotet!");

Thread.sleep(5000);

int ergebnis = 0,eingabe=0;
int richtig=0,falsch=0;
int note;

for(int i=10;i>0;i--){


double l=(10*Math.random());
int ersteZahl=(int)l;

double k=(10*Math.random());
int zweiteZahl=(int) k;

ergebnis=ersteZahl*zweiteZahl;
System.out.println(ersteZahl+"*"+zweiteZahl+"=");
long systemZeit=System.currentTimeMillis();

eingabe=Integer.parseInt(tastatur.readLine());
long systemZeit2=System.currentTimeMillis();

long zeitDifferenz=systemZeit2-systemZeit;

if(ergebnis==eingabe&&zeitDifferenz<5000){
System.out.println("Richtig ");
System.out.println();
richtig+=1;
}
else{
System.out.println("Falsch ");
System.out.println();
falsch+=1;
}


}
switch(richtig){
case 1: note = 6; break;
case 2: note = 5; break;
case 3: note = 5; break;
case 4: note = 5; break;
case 5: note = 4; break;
case 6: note = 4; break;
case 7: note = 3; break;
case 8: note = 2; break;
case 9: note = 1; break;
case 0: note = 6; break;
case 10: note = 1; break;
default : note = 0;
}

System.out.println();
System.out.println("Falsch:"+falsch+"Richtig:"+ric htig);
System.out.println();
System.out.println("Deine Note ist "+note);



}

}

Ich möchte die For schleife beenden so das der direkt so der benotung geht und die nicht beanworteten als falsch an sieht

Tut mir leid für die sortierung
 
Alt 04.12.2010, 14:30
Benutzerbild von korni
korni
 
Standard

Mit Escape ist das ganze in der Konsole ziemlich blöd zum lösen, da du da einen ActionListener bräuchtest und ich denke nicht das ihr das Thema schon behandelt habt in der Schule.

Einfach wäre es wenn etwa die Eingabe "0" oder einfach keine Zahl die Abbruchbedingung wäre, weil dann kannst du das ganz einfach nach jeder Eingabe überprüfen und dann gegebenenfalls die Schleife mit break beenden und halt die Differenz von "i" zu "0" als falsch zählen.
 
Alt 04.12.2010, 14:55
Benutzerbild von GamEz
Threadersteller
GamEz
 
Standard

ich bin noch nicht so gut ^^ habe erst seit anfang der schuljahres informatik heist august ^^
ich wollte das mit if machen wie geht das dann?

if(tastatur.read(0)){
break;
}

ich hatte so gedacht aber es geht nicht kannst du mir helfen wo ich das setzen muss und wie?
 
Alt 08.12.2010, 18:48
Benutzerbild von korni
korni
 
Standard

Also jedes mal wenn du einliest vergleichst du den Wert, also nachdem du eingelesen hast machst du eine if-Abfrage.

Code:
if(eingabe==0){
      falsch +=10-i; //Rest als Falsch zählen
      break;
}
 
Alt 08.12.2010, 19:05
Benutzerbild von GamEz
Threadersteller
GamEz
 
Standard

ok vielen dank
klappt so medium


Hallo dies ist ein Programm mit dem man das kleine 1x1 üben kann.
Du hast für jede Frage 5 sekunden Zeit, anschließend wirst du benotet!
Du kannst dieses Programm abbrechen indem du als Ergebnis einfach eine Null eintippst
1*6=
2
Falsch

5*5=
2
Falsch

6*4=
0

Falsch:4Richtig:0

Deine Note ist 6

das sagt die konsole
und das ist mein programm

import java.io.*;

public class Eins {


public static void main(String[] args)throws IOException, InterruptedException{
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Hallo dies ist ein Programm mit dem man das kleine 1x1 üben kann.");
System.out.println("Du hast für jede Frage 5 sekunden Zeit, anschließend wirst du benotet!");
System.out.println("Du kannst dieses Programm abbrechen indem du als Ergebnis einfach eine Null eintippst ");
Thread.sleep(5000);

int ergebnis = 0,eingabe=0;
int richtig=0,falsch=0;
int note;

for(int i=10;i>0;i--){

double l=(9*Math.random());
int ersteZahl=(int) l;

double k=(9*Math.random());
int zweiteZahl=(int) k;

zweiteZahl++;
ersteZahl++;

ergebnis=ersteZahl*zweiteZahl;
System.out.println(ersteZahl+"*"+zweiteZahl+"=");
long systemZeit=System.currentTimeMillis();

eingabe=Integer.parseInt(tastatur.readLine());
long systemZeit2=System.currentTimeMillis();

long zeitDifferenz=systemZeit2-systemZeit;

if(eingabe==0){
falsch +=10-i;
break;
}

if(ergebnis==eingabe&&zeitDifferenz<5000){
System.out.println("Richtig ");
System.out.println();
richtig+=1;
}
else{
System.out.println("Falsch ");
System.out.println();
falsch+=1;
}


}
switch(richtig){
case 1: note = 6; break;
case 2: note = 5; break;
case 3: note = 5; break;
case 4: note = 5; break;
case 5: note = 4; break;
case 6: note = 4; break;
case 7: note = 3; break;
case 8: note = 2; break;
case 9: note = 1; break;
case 0: note = 6; break;
case 10: note = 1; break;
default : note = 0;
}

System.out.println();
System.out.println("Falsch:"+falsch+"Richtig:"+ric htig);
System.out.println();
System.out.println("Deine Note ist "+note);



}

}

Geändert von GamEz (08.12.2010 um 19:16 Uhr).
 
Alt 09.12.2010, 18:56
Benutzerbild von korni
korni
 
Standard

Code:
double l=(9*Math.random());
int ersteZahl=(int) l;

double k=(9*Math.random());
int zweiteZahl=(int) k;

zweiteZahl++;
ersteZahl++;
Mach das besser so, ist einfacher und übersichtlicher. (Kann sein das du casten musst, denke aber nicht)

Code:
int ersteZahl = 9*Math.random()+1;
int zweiteZahl = 9*Math.random()+1;
Der Fehler liegt in der if-Abfrage wo Du die restlichen als Falsch wertest.
Hab nicht gesehen, dass deine for-Schleife von 10 bis 0 zählt, da das etwas unüblich ist.
So müsste es funktionieren:
Code:
if(eingabe==0){
    falsch +=i; 
    break;
}
Müsste so eigentlich funktionieren, bis auf dass der Code nicht sehr schön geschrieben ist und man einiges eigentlich anderes machen sollte, aber für den Anfang ist das schon mal okay.
 
Alt 09.12.2010, 19:50
Benutzerbild von GamEz
Threadersteller
GamEz
 
Standard

Vielen vielen dank

Noch eine frage ^^
kannst ich so das programm durch eine eingabe wiederholen-nein es klappt nicht ^^
es kommt nur auf die do-while schleife an

import java.io.*;

public class Eins {


public static void main(String[] args)throws IOException, InterruptedException{
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Hallo dies ist ein Programm mit dem man das kleine 1x1 üben kann.");
System.out.println("Du hast für jede Frage 2 sekunden Zeit, anschließend wirst du benotet!");
System.out.println("Du kannst dieses Programm abbrechen indem du als Ergebnis einfach eine Null eintippst ");
System.out.println("Gib ja ein um das Programm zu wiederholen");
System.out.println();
Thread.sleep(5000);

int ergebnis = 0;
int eingabe=0;
int richtig=0,falsch=0;
int note;
String Eingabe="";

do{

for(int i=10;i>0;i--){

Thread.sleep(2000);

double l=(9*Math.random());
int ersteZahl=(int) l;

double k=(9*Math.random());
int zweiteZahl=(int) k;

zweiteZahl++;
ersteZahl++;

ergebnis= ersteZahl*zweiteZahl;
System.out.println(ersteZahl+"*"+zweiteZahl+"=");
long systemZeit=System.currentTimeMillis();

eingabe=Integer.parseInt(tastatur.readLine());
long systemZeit2=System.currentTimeMillis();

long zeitDifferenz=systemZeit2-systemZeit;


if(eingabe==0){
falsch +=i;
break;
}

if(ergebnis==eingabe&&zeitDifferenz<5000){
System.out.println("Richtig ");
System.out.println();
richtig+=1;
}
else{
System.out.println("Falsch ");
System.out.println();
falsch+=1;
}


}
switch(richtig){
case 1: note = 6; break;
case 2: note = 5; break;
case 3: note = 5; break;
case 4: note = 5; break;
case 5: note = 4; break;
case 6: note = 4; break;
case 7: note = 3; break;
case 8: note = 2; break;
case 9: note = 1; break;
case 0: note = 6; break;
case 10: note = 1; break;
default : note = 0;
}

System.out.println();
System.out.println("Falsch:"+falsch+"Richtig:"+ric htig);
System.out.println();
System.out.println("Deine Note ist "+note);
System.out.println();
System.out.println("Möchtest du wiederholen?");
Eingabe=tastatur.readLine();

}while(Eingabe=="ja");
}
}

Geändert von GamEz (09.12.2010 um 20:07 Uhr).
 
Alt 09.12.2010, 20:49
Benutzerbild von korni
korni
 
Standard

Probiere es mal mit:
Code:
while(Eingabe.equals("ja"));
while(Eingabe.equalsIgnoareCase("ja")); //ignoriert Groß- und Kleinschreibung
 
Alt 11.12.2010, 13:55
Benutzerbild von GamEz
Threadersteller
GamEz
 
Standard

Du bist ein Gott danke es Klappt
Mal ne frage wie alt bist du und wo hast du das gelernt?
hardware forum Neue Frage stellen?
Kurze Zusammenfassung der Frage:
Bitte wählen Sie eine Kategorie:
Mailadresse:
Ihre Frage:
Ihre Frage wird als Gast gespeichert. Sollte eine Antwort im Forum erfolgen, bekommen Sie diese per Email zugeschickt.


Antispam, bitte die folgende Aufgabe lösen: 
 
Um auf dieses Thema zu ANTWORTEN
bitte sich zuerst » hier kostenlos registrieren!!

Antwort

Tags:

Ähnliche Tags: , ,


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann mich nicht entscheiden: Java oder C++ ? VirusX GFX, Webdesign und Programmierung 5 03.10.2011 16:24
Java Platform SE binary funktioniert nicht mehr sLide Anwendungssoftware 6 25.02.2011 23:13
Java Editor Problem Thomas Kunz Anwendungssoftware 5 05.05.2010 18:30
Java mit IE wizo666 Anwendungssoftware 1 21.03.2008 22:06
Java geht mit Internet Explorer nicht ToyotaSupra Anwendungssoftware 0 09.02.2008 13:26


Sie betrachten gerade: Mit Java for-Schleife mit ESC beenden


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.



Im PC Forum registrieren