2017-09-11 7 views
1

私はクラスのタリーカウンタを作成していますが、カウンタが一定量に達したときに制限を設定しなければなりません。 私の先生も "Math.max(n、0)"のようなものを使うことを望んでいますが、私はなぜifステートメントでそれを使うのか分かりません。カウンタが限界に達した後に停止しない

int i=1; 
boolean ticking = true; 
running: 
while (ticking){ 

String tally = input.nextLine();   

if (tally.equalsIgnoreCase("z")) 
{ 
    System.out.println(i++); 
    continue running; 
} 
else if (tally.equalsIgnoreCase("x")) 
{ 
    System.out.println(i--); 
    continue running; 
} 
else if (i<=0 || i>=10) 
{ 
    System.out.println("Cant go no more"); 
    continue running; 
} 
+1

あなたは 'ticking'の値を変更することはありません:maxは(nは、0)私はこれを考えて、あなたがこのようなものが必要

System.out.println("Total Count: "+Math.max(i,0));


のように、カウント を印刷することが期待されますそしてなぜあなたは '継続して走っているの? ' – UnholySheep

+0

'if'ステートメントの中で' ticking'変数をfalseに設定すると、カウントは停止します。 – pleft

+0

自分自身に質問してください: 'i <= 0 || i > = 10'のif文は' z'または 'x'を押したときに到達しましたか?そして、あなたがその時点で「続ける」なら、どうなるでしょうか? – BeyelerStudios

答えて

2

ループ終了条件は指定しません。ループ中に tickingは実際にはfalseに設定されません。ここで

、あなたはおそらくループを終了できるようにする必要がありますが、あなたは上に行く:あなたがループを終了falsetickingを設定することにより

else if (i<=0 || i>=10) 
{ 
    System.out.println("Cant go no more"); 
    continue running; 
} 

。あなたはこの条件i<=0 || i>=10iを増減した後、今trueであれば、再びループにないようにしたい場合は 以外にも、あなたはifの文ではなく、else-ifステートメントを使用する必要があります。
それは与える:サイドノートとして

if (tally.equalsIgnoreCase("z")) 
{ 
    System.out.println(i++); 
    continue running; 
} 
else if (tally.equalsIgnoreCase("x")) 
{ 
    System.out.println(i--); 
    continue running; 
} 

if (i<=0 || i>=10) 
{ 
    System.out.println("Cant go no more"); 
    ticking = false; 
} 

を、なぜあなたはラベルされたループを使用していますか?
ネストしたループがあり、外側のループを継続または中断したい場合は、それを使用すると意味があります。

また、なぜ各条件文の末尾にcontinue文を追加しますか?
if-else-ifステートメントは、次の条件ステートメントを実行しません。その1つはtrueです。


私の先生も、私たちは「Math.max(nは、0)」のようなものを使用したいが、我々は、if文の上にあることを使用する理由私は表示されません 。

私はそれを得ることができません。
正確にはどのような要件ですか?
とにかく、Math.max(n,0)Math.max(n,0)のみ値がmaxに優れていないことを確認するのに役立ちますしながら、値が両方のminとmaxの範囲の間にあることを、この最後の条件チェックとしてi<=0 || i>=10に代わるものではありません。

+0

ティッキングを偽に変更しようとしましたが、ティッキングを続けています。私はcontinueステートメントを置く。そうでなければ、私のコードは1 tick後に実行を停止するからです。 –

+0

@ Paladin-San私はこの問題を理解したと思う。私の編集をチェックしてください。 – davidxxx

+0

助けてくれてありがとう、私はcontinue文を削除して修正しました。結局私がそれらを必要としなかったように見える。 –

1

制限に達すると、目盛りをfalseに設定します。

if (i<=0 || i>=10) 
{ 
    ticking = false; 
    System.out.println("Cant go no more"); 
} 
1

2つのこと:tallyの値が必要にカウントを停止する"z"または"x"

2〜等しくないとき、あなたの最後の条件内部

の1-文すなわちelse if (i<=0 || i>=10)ブロックにのみ実行されます間違って設定してください。

else if (i<=0 || i>=10) { 
    ticking = false; 
    System.out.println("Cant go no more"); 
} 
 int i=1; 
     boolean ticking = true; 
     running: 
      while (ticking){ 

      Scanner sc = new Scanner(System.in); 
      String tally = sc.nextLine();   

      if (tally.equalsIgnoreCase("z")) 
      { 
       System.out.println(i++); 
      } 
      else if (tally.equalsIgnoreCase("x")) 
      { 
       System.out.println(i--); 
      } 
      if (i<=0 || i>=10) 
      { 
       ticking = false; 
       System.out.println("Cant go no more"); 
      } 
      continue running; 

     } 
    System.out.println("Total Count: "+Math.max(i,0)); 
関連する問題