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