将双精度与 Math.PI 进行比较(将双精度转换为字符串)



我正在尝试编写一个程序,将双精度(由用户输入(与常量 Math.PI 进行比较,在将两个值转换为字符串然后逐个字符比较它们之后。我收到错误,但我无法看到我应该在哪里更改我的代码。任何提示/帮助将不胜感激!

import java.util.Scanner;
public class Main {
    private static int matches = 0;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter value to compare");
        double compare = scan.nextDouble();
        compare(compare);
    }
    public static int compare(double value){
        String input = String.valueOf(value);
        String original = String.valueOf(3.523);
                //String.valueOf(Math.PI);
        if(input.charAt(0) == 3){
            for(int i = 3; i <= input.length(); i++){
              if(input.charAt(i) == (original.charAt(i))){
                matches++;
              }
            }
            return matches;         
        } else
            return matches;
    }
}

你的问题不清楚

这里的预期行为具体是什么?

我无法在比较方法中理解您的思维过程。

如果您不想将双精度与 Math.PI 进行比较,这很容易,因为双精度是原始变量,您可以使用"=="运算符,只需执行以下操作:

 if (scannedValue == Math.PI)
          System.out.println ("values are equals");

对于运行时异常,这是因为您没有将正确的双精度变量传递给扫描仪。

https://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html

最新更新