Java扫描器:连续循环

Java扫描器:连续循环,java,java.util.scanner,Java,Java.util.scanner,当我输入任何有效选项(A、B、C)时,if语句认为该选项不是A、B或C,并将导致一个连续循环 package other; import java.util.Scanner; public class Menu implements InterfaceMenu{ private String option; public void greeting(){ System.out.println("This program will use the Pythagorean Theo

当我输入任何有效选项(A、B、C)时,if语句认为该选项不是A、B或C,并将导致一个连续循环

package other;

import java.util.Scanner;

public class Menu implements InterfaceMenu{

private String option;

public void greeting(){

    System.out.println("This program will use the Pythagorean Theorem");
    System.out.println("to calculate a missing side.\n");
    System.out.println("Choose an option!\n");
    System.out.println("Choose Option A for missing side c");
    System.out.println("Choose Option B for missing side b");
    System.out.println("Choose Option C for missing side a\n");

}

public String optionGet(){

    System.out.print("Choose an option: ");
    Scanner ad = new Scanner(System.in);
    option=ad.next().toUpperCase();

    if( (option=="A") || (option=="B") || (option=="C") ){
        ad.close();
    }
    else{
        optionGet();
    }

    return option;
}

}

使用
String.equals()
方法。不是
==
比较器。
.equals()
检查字符串之间是否相等,
=
检查它们的引用是否相同,这不是您想要做的

使用
String.equals()
方法。不是
==
比较器。
.equals()
检查字符串之间是否相等,
=
检查它们的引用是否相同,这不是您想要做的

使用
String.equals()
方法。不是
==
比较器。
.equals()
检查字符串之间是否相等,
=
检查它们的引用是否相同,这不是您想要做的

使用
String.equals()
方法。不是
==
比较器。
.equals()
检查字符串之间是否相等,
=
检查它们的引用是否相同,这不是您想要做的

使用
选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。

使用
选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。

使用
选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。

使用
选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。

除了使用错误的方法比较字符串外,还有另一个严重问题:
optionGet()
系统中打开一个新的
扫描仪。如果输入包含的选项不是A、B或C,则
optionGet()
递归调用自身。递归调用执行另一个操作

Scanner ad = new Scanner(System.in);

当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保
新扫描仪
在循环之外。

除了使用错误的方法比较字符串外,还有另一个严重问题:
optionGet()
系统中打开一个新的
扫描仪
。如果输入包含的选项不是A、B或C,则
optionGet()
递归调用自身。递归调用执行另一个操作

Scanner ad = new Scanner(System.in);

当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保
新扫描仪
在循环之外。

除了使用错误的方法比较字符串外,还有另一个严重问题:
optionGet()
系统中打开一个新的
扫描仪
。如果输入包含的选项不是A、B或C,则
optionGet()
递归调用自身。递归调用执行另一个操作

Scanner ad = new Scanner(System.in);

当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保
新扫描仪
在循环之外。

除了使用错误的方法比较字符串外,还有另一个严重问题:
optionGet()
系统中打开一个新的
扫描仪
。如果输入包含的选项不是A、B或C,则
optionGet()
递归调用自身。递归调用执行另一个操作

Scanner ad = new Scanner(System.in);

当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保
新扫描器
在循环之外。

在Java字符串中,不能使用
=
标识符进行比较,方法与整数相同。相反,您可以使用
String.equals()

不过,对于您编写的内容,最好是比较字符,但这需要将
optionGet()
中返回的变量类型更改为
public char optionGet()
。但是,执行此操作还需要将
选项的类型更改为
char
。将类型更改为
char
将允许您使用
==
比较字符

另外,请确保在
optionGet()
之外定义
Scanner ad
,因为当前代码正在为每次重复重新定义它


调用您认为更容易的内容。

在Java字符串中,无法使用
=
标识符与整数进行比较。相反,您可以使用
String.equals()

不过,对于您编写的内容,最好是比较字符,但这需要将
optionGet()
中返回的变量类型更改为
public char optionGet()
。但是,执行此操作还需要将
选项的类型更改为
char
。将类型更改为
char
将允许您使用
==
比较字符

另外,请确保在
optionGet()
之外定义
Scanner ad
,因为当前代码正在为每次重复重新定义它


调用您认为更容易的内容。

在Java字符串中,无法使用
=
标识符与整数进行比较。相反,你可以