Helfen Sie mit, brechen aus, wenn/Neubauten?

Schreibe ich ein Protokoll-Klasse umfasst eine Vielzahl von wenn/Neubauten..hier ist die Klasse:

public class Protocol {
    Scanner scan = new Scanner(System.in);
    private static final int WAITING = 0;
    private static final int SENTREQUEST = 1;
    private static final int SENTITEMS = 2;
    private static final int ANOTHER = 3;
    private static final int CHOICE = 4;
    private int choice;

    private int state = WAITING;



    public String processInput(String theInput) {
        String theOutput = null;

        if (state == WAITING) {
            theOutput = "Do you accept the terms of agreement? Y/N?";
            state = SENTREQUEST;
        } else if (state == SENTREQUEST) {
            if (theInput.equalsIgnoreCase("y")) {

              theOutput = ": 1. program file 2. pictures 3. documentation";
              state = CHOICE;
             } else {
                theOutput = "Invalid Input!";
                state = SENTITEMS;

            }

        }
        else if (state == CHOICE) {
            choice = scan.nextInt();
            switch(choice) {
                case 1: theOutput = "show something";
                break;
                case 2: theOutput = "show something";
                break;
                case 3: theOutput = "show something";
                break;
            }
        }
        else if (state == SENTITEMS) {

              theOutput = "Want another? (y/n)";
                state = ANOTHER;

        } else if (state == ANOTHER) {

              theOutput = "Do you accept the terms of agreement? Y/N?";

            if (theInput.equalsIgnoreCase("y")) {
                theOutput ="test";
                state = SENTREQUEST;
            } else {
                theOutput = "Bye.";
                state = WAITING;
            }
        }
        return theOutput;
    }
}

Geht es nicht um den Schalter Fall, und ich bin sicher, es ist eine Frage der Ausbruch aus dem wenn/elses Klauseln korrekt, aber ich kann nicht finden, das Problem.

  • Sie haben nicht aufgezeigt, wie diese aufgerufen wird. Der erste Aufruf der Funktion immer nur den Status auf SENT_REQUEST und dann wieder, zum Beispiel. Es ist auch nicht klar, warum man nicht Umschalten auf den Zustand in den ersten Platz (oder in der Tat mit einem enum).
  • haben Sie setzen einen Haltepunkt in der debug it? Das ist, wo ich anfangen würde, normal.
  • Es könnte nützlich sein, zu verstehen, dass Scannen.nextInt() versucht nur mit dem Lesen des nächsten Tokens als int, so müssen Sie sicherstellen, dass das nächste token ist eigentlich ein int erste
  • Als mit dem Kommentar von chimoo, ich bin neugierig, warum Sie einen scan haben.nextInt() in der Erwägung, dass der restliche code wird verwendet "theInput". Sind Sie "aus versehen "Essen" Ihre Zahl in theInput und hängen an den Aufruf von nextInt? Einige Beispiel-Ausgabe eines Programms kann helfen, zu verstehen, was passiert ist.
  • Jessup Du hast vollkommen Recht, ich caste theInput in eine ganze Zahl und es funktioniert jetzt.
InformationsquelleAutor stokkseyri | 2011-02-22
Schreibe einen Kommentar