Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java输入小数并处理虚数_Java - Fatal编程技术网

Java输入小数并处理虚数

Java输入小数并处理虚数,java,Java,我想做一个二次公式程序。我基本上成功了,但有两个主要错误。一个是当我尝试输入十进制值a,b或c时,另一个是当我必须处理I(虚数)时。如何解决这些问题?我也很欣赏简化代码的方法这是我的代码: import java.util.Scanner; public class Calculator { public static void main (String args[]){ System.out.println("Input a"); Scanner ai = new S

我想做一个二次公式程序。我基本上成功了,但有两个主要错误。一个是当我尝试输入十进制值a,b或c时,另一个是当我必须处理I(虚数)时。如何解决这些问题?我也很欣赏简化代码的方法这是我的代码:

import java.util.Scanner;

public class Calculator {
    public static void main (String args[]){
    System.out.println("Input a");
    Scanner ai = new Scanner(System.in);
    double a = ai.nextInt();
    System.out.println("Input b");
    Scanner bi = new Scanner(System.in);
    double b = bi.nextInt();
    System.out.println("Input c");
    Scanner ci = new Scanner(System.in);
    double c = ci.nextInt();
    double Square1 = Math.pow(b, 2);
    double Square2 = -4*a*c;
    double Square3 = Square1 + Square2;
    double Square = Math.sqrt(Square3); 
    double Bottom = 2*a;
    double Top1 = -b + Square;
    double x1 = Top1/Bottom;
    double Top2 = -b - Square;
    double x2 = Top2/Bottom;
    System.out.printf("X = %s", x1);
    System.out.printf("X = %s", x2);

    }
}

由于使用了方法nextInt(),所以出现的第一个错误。当您尝试读取double-

您应该使用方法nextDouble代替nextInt()

第二个错误:Java不支持虚数:(

如果你想使用虚数,你必须写出你的类虚数

这是经过重构的代码:

import java.util.Scanner;

public class Calculator {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);

        System.out.println("Input a");
        double a = input.nextDouble();

        System.out.println("Input b");
        double b = input.nextDouble();

        System.out.println("Input c");
        double c = input.nextDouble();

        double square1 = Math.pow(b, 2);
        double square2 = -4 * a * c;
        double square3 = square1 + square2;

        if (square3 < 0) {
            double square = Math.sqrt(square3);

            double bottom = 2 * a;
            double top1 = -b + square;
            double x1 = top1 / bottom;
            double top2 = -b - square;
            double x2 = top2 / bottom;

            System.out.printf("X = %s", x1);
            System.out.println();
            System.out.printf("X = %s", x2);
        } else {
            System.out
                    .println("Can not calculate square root for negative number");
        }

        input.close();

    }
}
import java.util.Scanner;
公共类计算器{
公共静态void main(字符串参数[]){
扫描仪输入=新扫描仪(System.in);
系统输出打印项次(“输入a”);
double a=input.nextDouble();
系统输出打印项次(“输入b”);
double b=input.nextDouble();
系统输出打印项次(“输入c”);
double c=input.nextDouble();
双平方1=数学功率(b,2);
双平方2=-4*a*c;
双平方3=平方1+平方2;
如果(平方3<0){
双平方=数学sqrt(平方3);
双底=2*a;
双顶端1=-b+正方形;
双x1=顶部1/底部;
双顶端2=-b-正方形;
双x2=顶部2/底部;
System.out.printf(“X=%s”,x1);
System.out.println();
System.out.printf(“X=%s”,x2);
}否则{
系统输出
.println(“无法计算负数的平方根”);
}
input.close();
}
}
你可以注意到我加了

if (square3 < 0) {
if(平方3<0){
这是因为Math.square方法只能取正值。 如果传递负数,它将返回NaN-不是数字:

所有这些错误是什么?“double xx=nextInt()”double/int..您需要
nextDouble()吗
?对于虚部,您可能需要使用
if
来检查
Square3
是否为负数。希望计算虚部/复数根,或者错误消息是否正确?我实际上希望计算复数。@DarkAriel7在这种情况下,您应该为虚部数字编写类,或者使用一些库.我找到了这个)