This question already has answers here:
How do I compare strings in Java?
                                
                                    (23个答案)
                                
                        
                2年前关闭。
            
        

因此,代码应该一直为任何给定的数字提供斐波那契值,直到您输入“ q”为止,但是由于某种原因而不是停止,我得到了一个错误,有人知道为什么吗?我知道,如果您尝试解析字符串,将导致错误,但是我使用“ if(input!=“ q”)“来阻止该错误,为什么它仍在发生?

测试人员类别:

import java.util.Scanner;
public class FibonacciTester
{
    public static void main(String[] args)
    {
        String input = "1";
        System.out.println("Input a positive integer that you want to find the fibonacci number for");
        System.out.println("Type 'q' to quit");
        Scanner in = new Scanner(System.in);
        while (input != "q"){
            System.out.print("Type in the positive integer");
            input = in.next();
            if(input != "q"){
                int number = Integer.parseInt(input);
                FibonacciV fibonacci = new FibonacciV(number);
                number = FibonacciV.fibonacci(number);
                System.out.println("The Fibonacci number: " + number);
            }
        }
    }
}




public class FibonacciV
 {
    FibonacciV(int x)
    {
    }
    public static int fibonacci(int x)
    {
        if (x == 0)            //Base case
        {
            return 0;
        }
        else if (x == 1)       //Second base case
        {
            return 1;
        }
        else
        {
            return fibonacci(x-1)+ fibonacci(x-2);   // recursive call
        }
     }
}

最佳答案

input != "q"更改为!input.equals("q")

在Java中阅读有关how to compare strings的更多信息。

您正在获取NumberFormatException,因为当输入为“ q”(不是数字)时,它正在运行Integer.parseInt(input)。并且代码能够到达此语句,因为您的字符串比较不正确。

09-27 20:31