Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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,我需要它只显示最终答案,而不是代码第一部分的答案。这是因为它当前显示两个答案;一个来自第一部分,一个来自最后一部分,我所需要的是最后一部分的答案 public class Arbitrary extends ArithmeticExpression { Arbitrary(double value1, double value2, double value3, char operator1, char operator2){ this.value1 = value1; this.value2

我需要它只显示最终答案,而不是代码第一部分的答案。这是因为它当前显示两个答案;一个来自第一部分,一个来自最后一部分,我所需要的是最后一部分的答案

public class Arbitrary extends ArithmeticExpression {
 Arbitrary(double value1, double value2, double value3, char operator1, char operator2){
this.value1 = value1;
this.value2 = value2;
this.value3 = value3;
this.operator1 = operator1;
this.operator2 = operator2;
}


public double evaluate(){
    System.out.println("Arbitrary Answer Is");

    if (operator1 == '+'){            // this if statement covers all the signs that may come up,if the first sign is a +, then the program will add the two numbers but if it isn't. The program will continue to go to else until it finds the correct sign or states the rror message.//
        Addition add = new Addition(value1,value2);
        result1 = add.evaluate();
    }
    else if (operator1 == '-'){
        Subtraction sub = new Subtraction(value1,value2);
        result1 = sub.evaluate();
    }
    else if (operator1 == '*'){
        Multiplication mult = new Multiplication(value1,value2);
        result1 = mult.evaluate();
    }
    else if (operator1 == '/'){
        Division div = new Division(value1,value2);
        result1 = div.evaluate();
    }
    else{
        System.out.println("Invalid Sum!");
    }


    if (operator2 == '+')

             {
        Addition plus = new Addition(result1,value3);
        result2 = plus.evaluate();
            }


    else if (operator2 == '-')
    {
        Subtraction take = new Subtraction(result1,value3);
        result2 = take.evaluate();
    }
    else if (operator2 == '*'){
        Multiplication times = new Multiplication(result1,value3);
        result2 = times.evaluate();
    }
    else if (operator2 == '/'){
        Division share = new Division(result1,value3);
        result2 = share.evaluate();
    }
    else{
        System.out.println("Incorrect expression!");
    }

    return result2;
}

public double display() {
      System.out.println("Abitrary Question Is");
    System.out.println("("+value1 + "+" + value2+")" + " * "+ "("+value3+")");
    return result2;

}

}
这部分主要是:

Arbitrary a1 = new Arbitrary(6, 9, 2, '+', '*');
           a1.display();
           a1.evaluate();
           System.out.println();
这是我得到的输出: 一个偶然的问题是 (6.0+9.0) * (2.0) 补充答案是 15 答案是 30.0

我应该得到的是: 一个偶然的问题是 (6.0+9.0) * (2.0) 武断的回答是 30.0

addition.java

   class Addition extends ArithmeticExpression{
Addition(double value1, double value2){
   result = value1 + value2;
   this.value1 = value1;
    this.value2 = value2;
}


public double display() {
    System.out.println("Addition Question Is ");
    System.out.println(value1 + " + "+ value2);
    return result;

}
public double evaluate(){
    System.out.println("Addition Answer Is");
    System.out.println(result);
return result;
}
}
乘法.java

   class Multiplication extends ArithmeticExpression{
Multiplication(double value1, double value2){
    result = value1 * value2;
    this.value1 = value1;
    this.value2 = value2;
}



public double display() {
      System.out.println("Multiplication Question Is");
    System.out.println(value1 + " * "+ value2);
    return result;

}
public double evaluate(){
      System.out.println("Multiplication Answer Is");
    System.out.println(result);
    return result;
}


}

据我所知,您提供的代码根本无法打印答案,更不用说打印两次了。但是,每次调用evaluate时,它都会打印“任意答案”,在递归调用evaluate的情况下,这看起来会很奇怪


所以我猜这就是你所说的。如果这是真的,那么修复方法是删除
evaluate
开头的println,并将其放入调用
evaluate
的方法中

问题在于类
加法
乘法
我假设您在每个操作符(以及其他操作符)中打印结果 这会导致程序打印您执行的第一个操作(即添加)的答案 然后是第二个动作(即乘法)

在这两个类中,您都可以看到:

public double evaluate(){
    System.out.println("Addition Answer Is");
    System.out.println(result);
return result;
}
打印“加法答案为”+结果

只需删除(或注释掉)
加法
乘法

此外:

System.out.println("Addition Answer Is");
System.out.println(result);
乘法

   System.out.println("Multiplication Answer Is");
    System.out.println(result);
删除不必要的打印后,将代码更改为:

Arbitrary a1 = new Arbitrary(6, 9, 2, '+', '*');
           a1.display();
           System.out.println(a1.evaluate());
           System.out.println();

您的
main
方法在哪里?很难说调用了(
evaluate
display
)中的哪一个来完成这项工作。您得到的输出是什么,您希望得到什么?我如何让它以我需要的方式打印?搜索System.out.println(“Addition Answer is”);另外(和另一个在乘法中打印)并删除它。或张贴添加源和Multiplication@user1052425:我已经修复了答案。我已经让它工作了,谢谢。我现在的问题是,如何让它也打印出不同的运算符?@user1052425:我不确定我是否理解你的问题。但在任意类中,显示函数change System.out.println(“(“+value1+”+“+”+value2+”+“*”+”(“+value3+”)”);是System.out.println(“(“+value1+”+operator1+“+value2+”)+operator2+”(“+value3+”);为其他操作员修复打印