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.nextLine();

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

        }
    }
}
4

5 回答 5

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

-亨利

于 2013-07-08T20:22:17.823 回答
0

与问题无关,只是一个观察结果(当然,除非这是一个简化版本!)即我误读了这个问题

该程序将在您最后一次next..()调用后结束,因为它会计算所需的内容,然后在程序完成时退出。

添加一些东西来“暂停”程序的执行,例如

 // After calculating
 System.out.println("Press any key to continue");
 imput.next();
 // continue with what you want.
于 2013-07-08T20:25:56.797 回答
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")

于 2013-07-08T20:28:49.723 回答
0

更改以下行:

choice = imput.nextLine();

至:

choice = imput.next();

这存储了用户在字符串“选择”中写入的内容。

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

System.out.println(choice);

编辑:这只会得到下一个词。根据评论,如果您要扩展应用程序以处理平方根之类的输入或类似的输入,您需要先转到下一行:

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

需要转到下一行的原因是扫描仪“输入”仍在上一行,就在用户输入的第二个浮点数之后。

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

于 2013-07-08T20:22:22.300 回答
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);
       }
        }
于 2016-09-14T17:17:03.230 回答