Java Do循环变量无法解析为变量

Java Do循环变量无法解析为变量,java,Java,我有一个循环代码,直到用户输入-1。但是,我得到了一个错误: 键无法解析为变量 我以前使用过这段代码,但没有问题,所以我不知道为什么会出现这个问题 System.out.println("\nEnter a number, -1 to stop : "); do { int key = scan.nextInt(); int result = interpolationSearch(integerArray, key); if (result != -1) { System.

我有一个循环代码,直到用户输入-1。但是,我得到了一个错误:

键无法解析为变量

我以前使用过这段代码,但没有问题,所以我不知道为什么会出现这个问题

System.out.println("\nEnter a number, -1 to stop : ");
do {
  int key = scan.nextInt();
  int result = interpolationSearch(integerArray, key);
  if (result != -1) {
    System.out.println("\n"+ key +" element found at position "+ result);
  }
    break;
} while (key != -1);    // quit 
System.out.println("stop");
}

您需要在do循环之外声明int键。因为它是在循环中声明的,while条件不知道它。这称为超出范围。下面是一些示例和范围说明

将其更改为:

System.out.println("\nEnter a number, -1 to stop : ");
int key;
do {
  key = scan.nextInt();
  int result = interpolationSearch(integerArray, key);
  if (result != -1) {
    System.out.println("\n"+ key +" element found at position "+ result);
  }
    break;
} while (key != -1);    // quit 
System.out.println("stop");
}

您需要在do循环之外声明int键。因为它是在循环中声明的,while条件不知道它。这称为超出范围。下面是一些示例和范围说明

将其更改为:

System.out.println("\nEnter a number, -1 to stop : ");
int key;
do {
  key = scan.nextInt();
  int result = interpolationSearch(integerArray, key);
  if (result != -1) {
    System.out.println("\n"+ key +" element found at position "+ result);
  }
    break;
} while (key != -1);    // quit 
System.out.println("stop");
}
您需要在do循环之外声明密钥,并且每次循环运行时都可以获得nextInt。此外,循环中不需要break语句

System.out.println("\nEnter a number, -1 to stop : ");
int key;
do {
  key = scan.nextInt();
  int result = interpolationSearch(integerArray, key);
  if (result != -1) {
    System.out.println("\n"+ key +" element found at position "+ result);
  }      
} while (key != -1);    // quit 
System.out.println("stop");
}
您需要在do循环之外声明密钥,并且每次循环运行时都可以获得nextInt。此外,循环中不需要break语句

System.out.println("\nEnter a number, -1 to stop : ");
int key;
do {
  key = scan.nextInt();
  int result = interpolationSearch(integerArray, key);
  if (result != -1) {
    System.out.println("\n"+ key +" element found at position "+ result);
  }      
} while (key != -1);    // quit 
System.out.println("stop");
}

你应该在做{move int key;to out of do while loop之前初始化key我已经尝试过了,但是它会停止循环,这样用户就不能再输入另一个数字了。我希望它只在用户输入-1时停止。并删除中断符;这将退出你的循环,你喜欢在做之前初始化key时退出{move int key;to out of do while loop我已经尝试过了,但是它会停止循环,这样用户就不能再输入另一个数字了。我希望它只在用户输入-1时停止。并删除中断;这将退出你的循环,你喜欢在退出时退出,同时也是Hello!谢谢你的回复。不过,我尝试过这种方法,但它会停止循环,这样用户无法再输入另一个数字。我希望它仅在用户输入-1时停止。我刚刚移动了密钥声明。您的break语句将始终命中。这将中断循环。他不喜欢此检查问题您好!感谢您的回复。不过,我尝试了这种方法,但它会停止循环,因此用户无法输入另一个不再是数字。我希望它仅在用户输入-1时停止。我刚刚移动了密钥声明。您的break语句将始终命中。这将中断循环。他不喜欢此检查question@JamesGrant那太好了。如果它有效,那么你可以接受任何给出的答案作为公认的解决方案,并结束这个问题。@JamesGrant太好了。如果它有效,那么你可以接受任何给定的答案作为可接受的解决方案,并结束这个问题。