Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich hab ne Endlosschleife (While(true)) und darin ne Swicht-Case Anweisung und beim ersten durchlauf bricht die Endlosschleife ab. Nach jedem Case kommt ein break (sollte aber nur die Switch beenden), habs auch ohne break versucht -> bricht trotzdem ab. wenn ich Switch raus nehme gibt's keine Probleme. wenn jemand weiter weiß wäre ich echt froh.
Hm kann mir nur evtl. vorstellen dass du unter Umständen von getBestFinalResultNoFiller() kein bestes Resultat zurück bekommst (sprich null), das switch demzufolge eine NPE wirft, die du irgendwo mit einem try catch auffängst?
Dann müsstest du das aber durch Zeile 7 eig. sehen und wäre entwas strange. Andere Möglichkeit, dein VoiceOutput-Methode wirft eine Exception ?! :autsch:
danke für die antwort. aber ich glaub nicht dass es daran liegt, weil alles bestens funktioniert wenn ich Switch raus nehme! hab auch schon mit Default:..... versucht bringt auch nicht.
danke für die antwort. aber ich glaub nicht dass es daran liegt, weil alles bestens funktioniert wenn ich Switch raus nehme! hab auch schon mit Default:..... versucht bringt auch nicht.
Glauben ist nicht wissen und wie oft haben wir das hier schon gehört....wieso fragt ihr eig. in einem Forum wenn ihr dann eh niemandem glaubt?
Wenn du das Switch entfernst, entfernst du dann den Aufruf von VoiceOutput(Answer); auch?
mache doch mal while(true){ VoiceOutput("abc");} Und du hättest zumindest mal schreiben können was die Zeile 7 ausgibt...
Sorry, ich hab mich da wohl unklar ausgedrückt. VoiceOut() bleibt in der while nur das Switch Konstrukt fliegt raus -> dann ist alles in bester Ordnung, wenn ich Switch wieder rein nehme geht nix mehr. Also alle "Teile" der while bleiben wie sie sind nur Switch-Case wird entfernt.
wenn es so wäre wie du meinst dann müsst ich ohne Switch-Case den selben Effekt bekommen wie oben beschrieben. deswegen meinte ich: ich glaube nicht....
Sorry, ich hab mich da wohl unklar ausgedrückt. VoiceOut() bleibt in der while nur das Switch Konstrukt fliegt raus -> dann ist alles in bester Ordnung, wenn ich Switch wieder rein nehme geht nix mehr. Also alle "Teile" der while bleiben wie sie sind nur Switch-Case wird entfernt.
wenn es so wäre wie du meinst dann müsst ich ohne Switch-Case den selben Effekt bekommen wie oben beschrieben. deswegen meinte ich: ich glaube nicht....
Vlt. drückst du dich auch einfach nur schwierig und unvollständig aus. Denn ich verstehe unter "ohne Switch-Case" dass das gesamte Konstrukt rausfliegt, da der Aufruf von VoiceOutput aber innerhalb des case ist, hieße das für mich, dass du dies auch enternt hast bei deinem Test.
Aber ich bleibe ja hartnäckig, wir wollen dir ja helfen. Bitte ersetze doch mal deine gesamte while-Schleife mit folgendem:
Java:
while (true) {
Result result = recognizer.recognize();
if (result != null) {
String resultText = result.getBestFinalResultNoFiller();
System.out.println(resultText);
VoiceOutput("abc");
}else {
System.out.println("Error");
}
}
Was nun? ueh: (das müsste ja der Test sein von dem du die ganze Zeit sprichst?)
break bricht eine Schleife nunmal ab, auch wenn sie hier im switch verwendet wird.
Lass die break Anweisungen weg. Dann werden die anderen Fälle zwar geprüft, am Ergebnis ändert sich hier aber nichts, da sich alle cases paarweise ausschließen.
Dachte das spricht für sich. Hast du deine Aussage mal selbst getestet und wenn ja, unter welche Java-Version? Oder wo steht das geschrieben? Das würde dem TO ja dann u.U. weiterhelfen
break bricht eine Schleife nunmal ab, auch wenn sie hier im switch verwendet wird.
Lass die break Anweisungen weg. Dann werden die anderen Fälle zwar geprüft, am Ergebnis ändert sich hier aber nichts, da sich alle cases paarweise ausschließen.
Totaler Müll sofort vergessen! Davon stimmt nichts!
1. wenn "case" ohne break beendet wird dann werden alle Fälle die nachfolgen mit durchlaufen ohne erneute Fallprüfung
2. die while Schleife wird in diesem Fall nicht abgebrochen sonder nur der switch
Java:
public class Switch {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=2;
while(true){
switch(i){
case 2: System.out.println("2");break;
case 3: System.out.println("3");break;
}
}
}
}
ich habs mittlerweile geklärt: in VoiceOut() ist nochmal eine Methode in einer anderen file: Player() und darin ist ein System.exit(0); habs raus genommen und alles läuft.
was mir allerdings ein Rätsel bleibt ist warum es nur dann "wirkt" wenn ich das ganze mit Switch programmiere!?
@eRaaa: hab den Code den du gepostet hast schon etliche male versucht und der funktionierte immer nur eben nicht mit Switch.