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