2017-04-18 8 views
-3

私は文字列変数をいくつか持っており、それらを整数に変換した後にwhile節に入れようとしています。以下while文字列をintに変換した後

実際のコードは:

public void setUp() 
    { 
     String HText = ""; 
     int CorrectAnswer = Integer.parseInt(Levels.CorrectAnswer); 
     int Question1 = Integer.parseInt(Levels.Question1); 
     int Remaining = CorrectAnswer - Question1; 
     TextView TVHint = (TextView) findViewById(R.id.hint); 
     //HintText.setText(String.valueOf(Remaining)); 
     /*while (Remaining != 0) 
     {*/ 
      if (Remaining >= 100) 
      { 
       Remaining = Remaining - 100; 
       if (HText != "") 
       { 
        HText = HText + " + " + "100"; 
       } 
       else 
       { 
        HText = "100"; 
       } 
      } 
      else 
      { 
       if (Remaining >= 10) 
       { 
        Remaining = Remaining - 10; 
        if (HText != "") 
        { 
         HText = HText + " + " + "10"; 
        } 
        else 
        { 
         HText = "10"; 
        } 
       } 
       else 
       { 
        if (Remaining >= 5) 
        { 
         Remaining = Remaining - 5; 
         if (HText != "") 
         { 
          HText = HText + " + " + "5"; 
         } 
         else 
         { 
          HText = "5"; 
         } 
        } 
        else 
        { 
         if (Remaining >= 1) 
         { 
          Remaining--; 
          if (HText != "") 
          { 
           HText = HText + " + " + "1"; 
          } 
          else 
          { 
           HText = "1"; 
          } 
         } 
        } 
       } 
      } 
     //} 
     TVHint.setText(HText); 
    } 

このコードは動作しますが、私は残って0になるまでそれを繰り返したいとしばらくは現在動作しませんコメントアウト。

+1

POSTエラー・コードを助けるください –

+3

***しばらくは失敗する***どうやって?失敗します??? –

+1

Integer.parseInt(var1) – vinod

答えて

0
  1. を。

    たとえば

    Levels.CorrectAnswer値が"110"で、Levels.Question1値 は絶対Remaining値を取得するために使用Math.abs(CorrectAnswer - Question1)"1"

  2. です。

    int Remaining = Math.abs(CorrectAnswer - Question1); 
    
  3. RemainingHTextの値をチェックするために、いくつかのlogsを追加します。ここで

作業コードです:

public void setUp() 
{ 
    Levels Levels = new Levels(); 

    String HText = ""; 
    int CorrectAnswer = Integer.parseInt(Levels.CorrectAnswer); 
    int Question1 = Integer.parseInt(Levels.Question1); 
    int Remaining = CorrectAnswer - Question1; 

    Log.d("setUp", "CorrectAnswer: " + CorrectAnswer + "\n" 
      + "Question1: " + Question1 + "\n" + "Remaining: " + Remaining); 

    TextView TVHint = (TextView) findViewById(R.id.hint); 
    while (Remaining != 0) 
    { 
     Log.d("setUp", "Remaining: " + Remaining); 
     if (Remaining >= 100) 
     { 
      Remaining = Remaining - 100; 
      Log.d("setUp", "Remaining - 100: " + Remaining); 

      if (HText != "") 
      { 
       HText = HText + " + " + "100"; 
      } 
      else 
      { 
       HText = "100"; 
      } 
     } 
     else 
     { 
      if (Remaining >= 10) 
      { 
       Remaining = Remaining - 10; 
       Log.d("setUp", "Remaining - 10: " + Remaining); 

       if (HText != "") 
       { 
        HText = HText + " + " + "10"; 
       } 
       else 
       { 
        HText = "10"; 
       } 
      } 
      else 
      { 
       if (Remaining >= 5) 
       { 
        Remaining = Remaining - 5; 
        Log.d("setUp", "Remaining - 5: " + Remaining); 

        if (HText != "") 
        { 
         HText = HText + " + " + "5"; 
        } 
        else 
        { 
         HText = "5"; 
        } 
       } 
       else 
       { 
        if (Remaining >= 1) 
        { 
         Remaining--; 
         Log.d("setUp", "Remaining - 1: " + Remaining); 

         if (HText != "") 
         { 
          HText = HText + " + " + "1"; 
         } 
         else 
         { 
          HText = "1"; 
         } 
        } 
       } 
      } 
     } 
     Log.d("setUp", "HText: " + HText); 
    } 
    TVHint.setText(HText); 
} 

出力ログ:

04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: CorrectAnswer: 110 
                     Question1: 1 
                     Remaining: 109 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining: 109 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining - 100: 9 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: HText: 100 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining: 9 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining - 5: 4 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: HText: 100 + 5 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining: 4 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining - 1: 3 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: HText: 100 + 5 + 1 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining: 3 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining - 1: 2 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: HText: 100 + 5 + 1 + 1 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining: 2 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining - 1: 1 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: HText: 100 + 5 + 1 + 1 + 1 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining: 1 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: Remaining - 1: 0 
04-18 20:39:52.634 23432-23432/com.ferdous.stackoverflowanswer D/setUp: HText: 100 + 5 + 1 + 1 + 1 + 1 

希望これは〜

+0

iveは私のコードではそれが減少していますが、その一例ですが、その部分を入れていませんでした。 – TomBrad95

+0

@ TomBrad95 Levels.CorrectAnswerとLevels.Questionの値は何ですか – FAT

+0

@ TomBrad95私の更新された答えを確認してください。これがあなたを助けてくれることを願っています – FAT

0

代わりにInteger.parseInt(var1)を試してください。

+0

プログラムを実行すると、問題は 'int var1Int = Integer.valueOf(var1);'行のためにではなく、無限ループがあります –

0

プログラムは無限ループに入ります。あなたは1へと状態が

while (var1Int != 0) 

すなわちあるwhileループで等しくなるようにvar1Intの値を設定しているので。ループ変数var1Intの値が変更されていないため、var1Intが0になるとループから抜けることはありません。したがって、ループは無限に実行され続けます。終了条件が満たされるように、var1Intの値を変更するコードを記述する必要があります。 たとえば、これは、終了条件である0に等しいvar1Int値を行います、それはloop.Thisから出てくるこの

String var1 = "1"; 
int var1Int = Integer.valueOf(var1); 
while (var1Int != 0) 
{ 
var1Int --; 
} 

を試すことができる一例であり、あなたは上のベースのロジックを記述することができますあなたの要件。 問題は、Stringからintへの解析のためではありません。そのような場合は、次の行にのみエラーが表示されます。

int var1Int = Integer.valueOf(var1); 
+0

iveは私のコードで減少しています。 – TomBrad95

0

それが失敗しない、ループは、それが無限ループがあるので、それは永遠に '何かを印刷しようとしに行くだろうし、あなたが表示され、正常に動作します。

あなたは自分の価値を減少し、最終的にはそれが0に達するだろう、そこから脱出したい場合:Levels.CorrectAnswerLevels.Question1integer値の有効な文字列が含まれていることを確認し

while(a != 0){ 
    System.out.println(var1Int);//so you can check the difference 
    var1Int--; 
} 
+0

iveは私のコードでは減少していますが、それだけの例ですが、その部分を入れていませんでした。 – TomBrad95

+0

実際の問題についてもっと正確にしてください。 –

+0

質問のコードをもう一度見てください! – TomBrad95

関連する問題