我正在尝试让我的程序继续要求输入并回答输入

时间:2018-11-16 07:43:51

标签: java arrays

我这里有一个程序,该程序从输入文件中读取数字列表,然后要求用户输入数字。然后,程序将查看文件,如果用户输入的号码在文件中,则该文件将显示“此号码在文件中”;如果该号码不在文件中,则程序将显示“该号码不在文件中”。文件。”然后,程序必须不断要求用户输入数字,并且根据输入的数字,程序需要写回适当的响应。第一次要求用户输入数字时,程序可以正常工作并打印出正确的响应,问题是在程序再次要求输入数字后,它将打印出与输入的第一个数字相同的响应。不管输入的是数字还是文件中的数字。我的fn value(&mut self, k: K) -> V { .. fn value(&mut self, k: K) -> Rc<V> { .. 循环是否在错误的位置?不确定如何解决此问题。

while

3 个答案:

答案 0 :(得分:2)

尝试一下

public static void main(String[] args)throws IOException {

    Scanner s = new Scanner(System.in);

    int[] numbers = fileToArray();
    Arrays.sort(numbers);
    while(true) {
        System.out.print("Enter a number in the file: ");
        int numb = s.nextInt();

        int i = Arrays.binarySearch(numbers, numb);

        if (i < 0) {
            System.out.print("Number is not in file\n");
        } else if (i >= 0) {
            System.out.print("This number is in the file\n");

        }
    }
}

答案 1 :(得分:1)

问题是您在第二次输入后不执行搜索,因此会打印出旧结果。您必须重新分配用户输入并对每个输入执行搜索:

for(;;) {                                       // infinite loop
  System.out.println("Number is not in file");
  num = s.nextInt();                            // re-read user input
  int i = Arrays.binarySearch(numbers, numb);   // search again based on input
  if (i < 0) {
    System.out.println("Number is not in file\n");
  } else {
    System.out.print("This number is in the file\n");
  }
}

答案 2 :(得分:1)

只需删除第一个输入并执行循环中的所有操作即可。主要内容将变为:

public static void main(String[] args) throws IOException {
    Scanner s = new Scanner(System.in);
    int[] numbers = fileToArray();
    Arrays.sort(numbers);

    while (true) {
        System.out.print("Enter a number in the file: ");
        int numb = s.nextInt();
        int i = Arrays.binarySearch(numbers, numb);
        if (i < 0) {
            System.out.print("Number is not in file\n");
        } else {
            System.out.print("Number is in file\n");
        }
    }
}

问题是您没有退出条件-它会永远询问。您可能会想一些事情;)