微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连续计算器

如何解决连续计算器

我正在制作一个计算器,您可以在其中询问两个数字和一个运算。如果用户想继续,要求一个号码和一个操作。然后,使用最近的结果和新的输入值执行选定的操作。 我被困在存储上次操作的结果以将其用于另一个操作。这是我的代码

import java.util.Scanner;

public class practice {

    static double add,sub,mul,div;
    static double another;

    public static void main(String[] args) {

        char choose,cont;

        Scanner u = new Scanner(system.in);

        System.out.print("Enter number 1: ");

        double one = Double.parseDouble(u.nextLine());

        System.out.print("Enter number 2: ");

        double two = Double.parseDouble(u.nextLine());

        do {

            System.out.print("\nSelect an operation\n[A]Addition\n[B]Subtraction\n[C]Multiplication\n[D]Division");

            System.out.print("\n\nChoose: ");

            choose = u.next().charat(0);

            if ((choose == 'A') || (choose == 'a')) {

                add = one + two;

                add += another;

                System.out.println("The sum is " + add);
            } else if (choose == 'B' || choose == 'b') {

                sub = one - two;

                sub -= another;

                System.out.println("The difference is " + sub);

            } else if (choose == 'C' || choose == 'c') {

                mul = one * two;

                mul *= another;

                System.out.println("The product is " + mul);

            } else if (choose == 'D' || choose == 'd') {

                div = one / two;

                div /= another;

                System.out.println("The quotient is " + div);
            } else {

                System.out.println("Invalid Selection");

            }

            System.out.print("Continue?[Y/N]: ");

            cont = u.next().charat(0);

            if (cont == 'Y') {

                System.out.print("Enter another number: ");

                another = u.nextDouble();

                another = another;

            } else {

                System.out.println("End of Program");

            }

        } while (cont == 'Y');

    }
}

解决方法

您可以将最后一个值的值置于循环之外。下面是一些伪代码来演示我的意思:

variableStore = 0
loop:
   perform operations
   when printing out results to the user,assign variableStore = result
Next time,variableStore would be the value of the previous result

,

您不需要所有这些变量。变量 one 总是 存储最新的结果。此外,由于您的类只包含一个方法,即 main,因此无需声明类成员变量。请参阅解释变量范围的 Java Language specification 的第 6.3 节。该链接适用于 Java 7,但对所有 Java 版本都有效。

这是我对 practice 类的重写。请注意,我将类名更改为 Practice,以与 Java naming conventions 保持一致。

import java.util.Scanner;

public class Practice {

    public static void main(String[] args) {
        char choose,cont = 'Y';
        Scanner u = new Scanner(System.in);
        System.out.print("Enter number 1: ");
        double one = Double.parseDouble(u.nextLine());
        double two = 0;
        boolean invalidSelection = false;
        do {
            if (!invalidSelection) {
                System.out.print("Enter another number: ");
                two = Double.parseDouble(u.nextLine());
            }
            invalidSelection = false;
            System.out.print(
                    "\nSelect an operation\n[A]Addition\n[B]Subtraction\n[C]Multiplication\n[D]Division");
            System.out.print("\n\nChoose: ");
            choose = u.nextLine().charAt(0);
            if ((choose == 'A') || (choose == 'a')) {
                one += two;
                System.out.println("The sum is " + one);
            }
            else if (choose == 'B' || choose == 'b') {
                one -= two;
                System.out.println("The difference is " + one);
            }
            else if (choose == 'C' || choose == 'c') {
                one *= two;
                System.out.println("The product is " + one);
            }
            else if (choose == 'D' || choose == 'd') {
                one /= two;
                System.out.println("The quotient is " + one);
            }
            else {
                System.out.println("Invalid Selection");
                invalidSelection = true;
                continue;
            }
            System.out.print("Continue?[Y/N]: ");
            cont = u.nextLine().charAt(0);
        } while (cont == 'Y' || cont == 'y');
        System.out.println("End of Program");
    }
}

请注意,在上面的代码中,我用对方法 next 的调用替换了对方法 java.util.Scanner(属于 nextLine 类)的调用。有关更多详细信息,请参阅此 SO 问题。

Scanner is skipping nextLine() after using next() or nextFoo()?

我建议您使用调试器运行代码以了解其工作原理。

这是示例运行的输出。

Enter number 1: 3
Enter another number: 2

Select an operation
[A]Addition
[B]Subtraction
[C]Multiplication
[D]Division

Choose: x
Invalid Selection

Select an operation
[A]Addition
[B]Subtraction
[C]Multiplication
[D]Division

Choose: c
The product is 6.0
Continue?[Y/N]: y
Enter another number: 4

Select an operation
[A]Addition
[B]Subtraction
[C]Multiplication
[D]Division

Choose: b
The difference is 2.0
Continue?[Y/N]: y
Enter another number: 0.5

Select an operation
[A]Addition
[B]Subtraction
[C]Multiplication
[D]Division

Choose: d
The quotient is 4.0
Continue?[Y/N]: n
End of Program
,

试试这个代码(它对我有用):

import java.util.Scanner;

public class practice {

static double prevAns = 0;
 
static double another;
 
static double one;

static double add,sub,mul,div;
  
static boolean contin = false;

public static void main (String []args){

  
while(true){
  char choose,cont;
 

Scanner u=new Scanner(System.in);
  
if (!contin){
  System.out.print("Enter number 1: ");

one= Double.parseDouble(u.nextLine());
} else {
  one = prevAns;
  
}
  System.out.print("Enter number 2: ");

double two= Double.parseDouble(u.nextLine());


System.out.print("\nSelect an operation\n[A]Addition\n[B]Subtraction\n[C]Multiplication\n[D]Division");

System.out.print("\n\nChoose: ");

choose=u.next().charAt(0);

if((choose=='A')||(choose=='a')){

add = one+two;


prevAns = add;

System.out.println("The sum is "+add);}

else if (choose=='B'||choose=='b') {

sub=one-two;

  
prevAns = sub;

System.out.println("The difference is "+sub);

}else if (choose=='C'||choose=='c'){

mul=one*two;

prevAns = mul;

System.out.println("The product is "+mul);

}else if(choose=='D'||choose=='d'){

div=one/two;


prevAns = div;

System.out.println("The quotient is "+ div);}

else{

System.out.println("Invalid Selection");

}

System.out.print("Continue?[Y/N]: ");

cont=u.next().charAt(0);

if(cont=='Y'){
contin = true;

} else{

System.out.println("End of Program");

}
}
}  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。