0

入力が という別のクラスの配列リストにある数値である場合、「数値が一致する」という結果が得られないようですSomeNumbers。ただし、実行すると、光の速度で配列内の数値ではないという結果が得られます。

jGraspで何らかの理由でデバッグツールを使用できるため、実際の問題がどこにあるかを特定するのにも苦労しています。

これは、一致するかどうかを確認するためにユーザーが番号を入力するメイン アプリケーションです。

import java.util.Scanner;

public class SomeNumbersClient {

public static void main(String[] args) {

  SomeNumbers testNumbers = new SomeNumbers();

  Scanner userInput = new Scanner(System.in);
  System.out.print("Enter Integer Value: ");
  int input = userInput.nextInt();

  testNumbers.setNumber(input);

  if (testNumbers.getTest()) {
     System.out.println("The numbers match");
  } else {
     System.out.println("The numbers don't match");
  }

}

}

これはgetTest、ブール値の結果が true か false かを確認するためにメソッドを呼び出すクラスです。次に、クライアントの if ステートメントで true かどうかを確認し、一致があることを表示します。そうでない場合は、一致しません。

public class SomeNumbers {
       private int[] numbers = { 5658845, 4520125, 7895122, 8777541, 8451277, 1302850,         8080152, 4562555, 5552012, 5050552, 7825877, 120255, 1005231, 6545231, 3852082, 7576651,7881200, 4581002};
       private int number;
       private int index = 0;
       private boolean test = true;

       public void setNumber(int input) {
           number = input;
       }

       public boolean getTest(){
           while (index < numbers.length){
               if (number != numbers[index]){
                   test = false;
                   index++;
               } else {
                   test = true;
               }
              }
        return test;
       }
      }

コードの種類が切り刻まれて申し訳ありませんが、助けていただければ幸いです。

4

1 に答える 1

1

ここに getTest 関数の適切なバージョンがあります。あなたの問題は、一致を見つけた (そして変数 test を true に設定した) ためでしたが、検索を続行すると、次の番号が "test" を false に変換します。

public boolean getTest()
{
    index = 0;
    while (index < numbers.length)
        if (number != numbers[index])
            index++;
        else
            return true;
    return false;
}
于 2013-10-10T00:11:57.027 に答える