我在java中编写了一个程序,它比较了两个变量值X和Y. 当我在循环的第一次尝试中为X和Y输入相同的数字时,它表示匹配并终止。但如果它返回" false"在第一个循环中然后返回" true"在接下来它没有终止并继续,好像" b"有一个" false"值。
import java.util.Scanner;
public class clads {
//Variables
public static int y;
public static int x;
static boolean b = mymethod() ;
//MainProcess
public static boolean mymethod() {
Scanner myscanner = new Scanner(System.in);
System.out.println("put a number for X");
x = myscanner.nextInt();
System.out.print("put a number for Y");
y = myscanner.nextInt();
if (y==x){
System.out.println("match");
return true;
}else{
System.out.println("Mismatch, Redo");
return false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
while(b ==false){
mymethod();
}
}
}
但是当我添加一个" Break;"关键字在返回" true"值。请问我能解释一下。
public static void main(String[] args) {
// TODO Auto-generated method stub
while(b ==false){
mymethod();
Break;
}
答案 0 :(得分:3)
通过致电b
初始化mymethod
时,它会永远设置为true
或false
。如果是真的,那么你就不会执行。如果它是假的,你的循环将永远执行。
答案 1 :(得分:2)
你的错误在于在声明b时设置b的值。实际上你根本不需要b
。只需将mymethod()的调用放在while条件中:
import java.util.Scanner;
public class clads {
//Variables
public static int y;
public static int x;
//MainProcess
public static boolean mymethod() {
Scanner myscanner = new Scanner(System.in);
System.out.println("put a number for X");
x = myscanner.nextInt();
System.out.print("put a number for Y");
y = myscanner.nextInt();
if (y==x){
System.out.println("match");
return true;
}else{
System.out.println("Mismatch, Redo");
return false;
}
}
public static void main(String[] args) {
while(!mymethod());
}
}
每次调用mymethod()时都必须检查mymethod()的返回值。您的原始代码刚刚捕获了第一个值并永远使用它。
答案 2 :(得分:1)
因为您的变量初始化一次,然后永远不会更新。尝试:
public static void main(String[] args) {
while(!b){
b = mymethod();
}
}
答案 3 :(得分:0)
您可以按照以下方式修改代码
public static void main(String[] args) {
// TODO Auto-generated method stub
while(b ==false){
if (mymethod()) {
break;
}
}
如果函数mymethod()
返回true,则while
循环将终止,但当函数返回false时,while
将继续。