基本计算器错误

时间:2013-07-08 20:15:40

标签: java

所以我试图测试一个基本的计算器,但程序在它要求“添加,减去,乘法或除法”后立即结束 - 它不会给用户输入的机会。请帮助欣赏:)谢谢!

import java.util.Scanner;
public class Lator {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        float num1;
        float num2;
        String choice;

        Scanner imput = new Scanner(System.in);

        System.out.println("This is a calculator.");
        System.out.println("Enter your first number.");
        num1 = imput.nextFloat();

        System.out.println("Enter your second number.");
        num2 = imput.nextFloat();

        System.out.println("Would you like to add, subtract, divide, or multiply?");
        choice = imput.nextLine();

        if(choice.equals("Add")||choice.equals("+")||choice.equals("Addition")) {
        System.out.println("Number1 " + num1 + " + " + "number2" + num2 + "=" + (num1 + num2));

        }
    }
}

5 个答案:

答案 0 :(得分:3)

使用以下代码。代码中的注释解释了答案。

import java.util.Scanner;

    public class Lator {

        public static void main(String[] args) {
            float num1;
            float num2;
            String choice;

            Scanner imput = new Scanner(System.in);

            System.out.println("This is a calculator.");
            System.out.println("Enter your first number.");
            num1 = imput.nextFloat();

            System.out.println("Enter your second number.");
            num2 = imput.nextFloat();

            imput.nextLine(); //ADDED LINE

            System.out.println("Would you like to add, subtract, divide, or multiply?");
            choice = imput.nextLine();

            if(choice.equals("Add")||choice.equals("+")||choice.equals("Addition")) {
            System.out.println("Number1 " + num1 + " + " + "number2" + num2 + "=" + (num1 + num2));

            }
        }
    }

我们添加了imput.nextLine();,因为imput.nextFloat();会留下我们需要清除的剩余新行字符,然后再扫描用户的选择。

当用户输入“添加”时,它将此新行字符作为选择。让我知道这对你有什么影响。在此处查看类似的答案,Java For Loop Issue

-Henry

答案 1 :(得分:0)

更改以下行:

choice = imput.nextLine();

为:

choice = imput.next();

这将存储用户在字符串'choice'中写的内容。

您可以将其添加为下一行来测试它:

System.out.println(choice);

编辑:这只会得到下一个字。根据评论,如果你要扩展你的应用程序来处理像Square Root这样的输入,你会想要先进入下一行:

imput.nextLine();
System.out.println("Would you like to add, subtract, divide, or multiply?");
choice = imput.nextLine();

需要转到下一行的原因是Scanner'imput'仍然在前一行,就在用户输入第二个浮点数之后。

我认为应用程序的最佳选择是使用我的第一个示例并使用imput.next();,因为您的应用程序仅使用一个单词输入。使用imput.nextLine();可能会扩大输入错误的可能性,因为它可以获得整行。

答案 2 :(得分:0)

与问题无关,只是观察(除非这是课程的简化版本!)即我误解了问题

程序将在您上次next..()调用后结束,因为它会计算出程序结束后需要退出的内容。

添加一些内容以“暂停”程序的执行,例如

 // After calculating
 System.out.println("Press any key to continue");
 imput.next();
 // continue with what you want.

答案 3 :(得分:0)

您可以使用此代码

import java.util.Scanner;
public class Lator {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        float num1;
        float num2;
        String choice;

        Scanner imput = new Scanner(System.in);

        System.out.println("This is a calculator.");
        System.out.println("Enter your first number.");
        num1 = imput.nextFloat();

        System.out.println("Enter your second number.");
        num2 = imput.nextFloat();

        System.out.println("Would you like to add, subtract, divide, or multiply?");
        choice = imput.next();

        if(choice.equals("Add")||choice.equals("+")||choice.equals("Addition")) {
        System.out.println("Number1 " + num1 + " + " + "number2 " + num2 + " = " + (num1 + num2));

        }
    }
}

使用choice.equalsIgnoreCase("add")代替choice.equals("Add")

答案 4 :(得分:0)

import java.util.*;
class Calculate
 {public static void main(String args[])
 {int a,b,choice;
 Scanner sc=new Scanner(System.in);
   System.out.println("enter numbers");
   a=sc.nextInt();
   b-sc.nextInt()
   System.out.print("1.add\n2.sub\n3.mul\n4.div\n5.mod");
    System.out.println("enter choice");
    choice=sc.nextInt();
 do
 {
switch(choice)
{case 1:System.out.println("result is" +(a+b));
     break;
case 2:System.out.println("result is" +(a-b));
     break;
case 3:System.out.println("result is" +(a*b));
     break;
case 4:if(a>b)
   { System.out.println("result is" +(a/b));
     break;}
  else { System.out.println("invalid");
   break;}
 case 5:System.out.println("result is" +(a%b));
     break;
   default: System.out.println("invalid");
   break;
        }
        }
      while(choice!=6);
       }
        }