2017-11-13 8 views
0

私はJavaでコーディングするのが初めてです(昨日開始)。私がしようとしているのは、整数の入力を行うことです.int cが1よりも大きいか、0より小さい場合(1または0でない場合)、再び開始します。 int cが1または0のいずれかと等しい場合は、引き続き同形を続けます。私はの後に何らかのループを挿入しようとしましたが(c> 1 || c < 0)と思われますが、動作していないように見えます。アルゴリズムをやり直すための簡単な方法はありますか?私はすでに2時間以上これを修正しようとしていますが、私は何度も何度も繰り返し混乱させています。アルゴリズムをもう一度開始しますか?

// more code up here but it is unimportant 
int c = sc.nextInt(); 

    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
    } else if (c == 0) { //more code follows here but is unimportant 
+0

「再び」 - 再使用し、それを...もっとがあるので、私は、再び全体のメソッドを呼び出す必要はありません@lolo方法でそれを入れて、再び – lolo

+0

それを呼び出します物事は上に行く。しかし、ありがとう、それを言及すべきである。 –

答えて

2

だから、もう一度入力をお願いしたいと思います、私が想定しています。

簡単な方法は次のようになります。 A:

int c = sc.nextInt(); 

while (c > 1 || c < 0) { 
    c = sc.nextInt(); 
} 
//code continues 
+0

しかし、その後、彼はちょっと、ええ、私はメッセージでいくつかの問題があったが、でそれを修正することができ –

+0

もうメッセージを出力しません: 'もし(C> 1個の|| C <0){ \t \t \tながら、(C > 1 || c <0){ \t \t \t \t System.out.println( "No 0 or 1、try again again"); \t \t \t \tc = sc。nextInt(); \t \t \t} \t \t} ' 作品今、たくさんありがとう:)あなたはそれが役に立ったと評価してい –

+0

うれしいです。これを正解としてください –

0

あなたは、私は少し説明をします、あなたが新しいと言うので

while(true){ 
    int c = sc.nextInt(); 

    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
     break; 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
    } else if (c == 0) { //more code follows here but is unimportant 
    ... 
} 

を持っているので、ループを使用する必要がありますwhileループは、特定の条件が満たされている限り、コードブロック(すなわち、{ }内)にあるものを繰り返します。私の答えの場合、私はwhile(true)を意味しました。それは何かが停止するまで繰り返されることを意味します。この場合、私はループを終了/停止させるbreakを使用しました。

+0

ありがとうございます。 while(true){}ループを実装しようとしましたが、うまく動作しません。私は問題を解決することができた。まず、cが1または0のいずれかと等しくないかどうかをチェックし、そうでない場合は、cが1または0でなければループし、cを入力として次の整数にリセットします。ありがとうございました! –

0

あなたは、この場合にwhileを使用して終了しbreakを使用することができます。

while (scanner.hasNext()) { 
    int c = sc.nextInt(); 

    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
     break; 
    } else if (c == 0) { 
     ... 
     break; 
    } 
} 

scanner.close(); 
-1

あなたが持っていないときは、その後、(私はすでにケースであると思います)関数でコードを置くことができます期待された結果を返し、再度呼び出す場合は、関数自体を呼び出してください。
これは再帰と呼ばれています。 詳しくはhereをご覧ください。たとえば :

// more code up here but it is unimportant 
public void myFunction(){ 
    int c = sc.nextInt(); 
    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
    } else if (c == 0) { //more code follows here but is unimportant 
    } 
    //You want to call your function again 
    myFunction(); 
} 
+0

なぜこれが下落したのですか? –

+0

私は全体のメソッドをもう一度呼びたくはありません。ありがとう、それを言及すべきだった。私は知らない、なぜこれが下落されたのか。 –

関連する問題