[英]Why is my method running twice?
當我嘗試用自己的方法創建自己的類時,該方法運行了兩次。 我試着轉動部分代碼來發現故障,但該方法仍然運行了兩次。
這是班級:
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,我都會在提示兩次后輸出始終為“否”。
您在類TestRB的構造函數中調用test.run()。 您可以在構造函數中刪除該調用,也可以刪除方法調用
test.run();
來自TestRunRB類。 你只是有效地調用該方法兩次。
有兩個問題。
1)run()方法被調用兩次,因為它在調用時首先在構造函數中運行
TestRB test = new TestRB();
然后再次明確地再次調用它
test.run();
2)第二個問題與打印輸出有關,即使您輸入了y
這是因為您沒有使用equals
方法進行字符串評估。 您應該將現有的yOrN
方法更改為以下方法
public boolean yOrN ()
{
return (userInput.equals("y"));
}
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.