簡體   English   中英

為什么我的方法運行兩次?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM