当我尝试用自己的方法创建自己的类时,该方法运行了两次。我试着转动部分代码来发现故障,但该方法仍然运行了两次。
这是班级:
import java.util.Scanner;
public class TestRB
{
private String userInput;
private Scanner scan = new Scanner (System.in);
public TestRB ()
{
run();
}
public void run ()
{
System.out.println("Please input y or n.");
userInput = (scan.next()).toLowerCase();
while (!userInput.equals("y") && !userInput.equals("n"))
{
System.out.println("Invalid input, try again.");
System.out.println("Please type in \"y\" or \"n.\"");
userInput = (scan.next()).toLowerCase();
}
}
public boolean yOrN ()
{
return (userInput == "y");
}
public String toString()
{
return userInput;
}
}
这是该方法的目标。
public class TestRunRB
{
public static void main (String[] args)
{
TestRB test = new TestRB();
test.run();
if (test.yOrN())
System.out.println("Yes");
else
System.out.println("No");
}
}
无论是否输入y或n,我都会在提示两次后输出始终为“否”。
答案 0 :(得分:4)
您在类TestRB的构造函数中调用test.run()。您可以在构造函数中删除该调用,也可以删除方法调用
test.run();
来自TestRunRB类的。你只是有效地调用该方法两次。
答案 1 :(得分:1)
有两个问题。
1)run()方法被调用两次,因为它在调用
时首先在构造函数中运行TestRB test = new TestRB();
然后再次明确地再次调用它
test.run();
2)第二个问题与打印输出相关,即使您输入了y
这是因为您没有使用equals
方法进行字符串评估。您应该将现有的yOrN
方法更改为以下
public boolean yOrN ()
{
return (userInput.equals("y"));
}
希望这有帮助