2017-12-08 4 views
-2

EditTextが空でTextViewが右のテキストを表示しているのに、EditTextフィールドに数字を書き込んでボタンを押すと、必要なテキストをTextViewで特定のEditText条件に置くボタンを作ろうとしています。 。 入れ子のif文ですか?

public void Guess(View view) { 
    EditText Spejimas = (EditText) findViewById(R.id.guess); 
    Tekstas = (TextView) findViewById(R.id.textView3); 

    if (Spejimas.getText().length() == 0) { 
     Tekstas.setText("Oops, you forgot to type your guess!"); 
    } else if (Spejimas.getText().length() != 0) { 
     int Guessas = Integer.parseInt(Spejimas.toString()); 
     if (Guessas == number) { 
      Tekstas.setText("Congratulations! You got it right!"); 
     } else if (Guessas > number) { 
      Tekstas.setText("Your number is too high, try again!"); 
     } else if (Guessas < number) { 
      Tekstas.setText("Your number is too low, try again!"); 
     } 
    } 
} 

私はTextViewには言いたい:「!!おめでとうございますあなたは右のそれを得た」、Guessasは数に等しいときに、「あなたの数が多すぎる、もう一度試して!」、Guessasは「数よりも高い場合あなたの数字は低すぎます、もう一度やり直してください! "、ゲッサスが数字よりも低いとき。

EditTextに数字があるときにこのコードブロックをトリガーするボタンを押すと、プログラムがクラッシュします。

+0

'int Guessas = Integer.parseInt(Spejimas.getText());'多分、 –

+1

なぜクラッシュするのですか? logcatを投稿すると、エラーがどこにあるかがわかります。 –

答えて

0

変更

int Guessas = Integer.parseInt(Spejimas.getText().toString()); 

問題でInteger.parseInt()は数字のみを含む文字列値を除いに

int Guessas = Integer.parseInt(Spejimas.toString()); 

からコード。ここではedittextを文字列として送信しようとしています。編集テキストを数字以外の文字を含む文字列に変換しています。

+0

なぜこれで解決できるのでしょうか? –

+0

彼はedittextを含むテキストの代わりにedittextオブジェクトを解析しようとしているからです。 –

+0

すぐにあなたの答えを説明する習慣をつけてください。いつも –

0

これは、getTextメソッドが返す値をキャストしないためです。 getTextはEditableを返します。

if (Spejimas.getText().toString().length() == 0) { 
    Tekstas.setText("Oops, you forgot to type your guess!"); 
} else if (Spejimas.getText().toString().length() != 0) { 
    int Guessas = Integer.parseInt(Spejimas.getText().toString()); 
    if (Guessas == number) { 
     Tekstas.setText("Congratulations! You got it right!"); 
    } else if (Guessas > number) { 
     Tekstas.setText("Your number is too high, try again!"); 
    } else if (Guessas < number) { 
     Tekstas.setText("Your number is too low, try again!"); 
    } 
} 

そしてまた、あなたがこの行の問題を持っている:

int Guessas = Integer.parseInt(Spejimas.toString()); 

あなたはこれにそれを変更する必要があります:あなたはこのように、あなたがのgetTextを呼び出すどこでもへのtoString()メソッドを追加する必要があります

int Guessas = Integer.parseInt(Spejimas.getText().toString()); 
関連する問題