所以这是我的代码。
System.out.println("setcaculatorinput");
Scanner sc = new Scanner(System.in);
int z = sc.nextInt();
System.out.println("setvalueA");
int a = sc.nextInt();
System.out.println("setvalueB");
主要问题是我无法越过System.out.println(“setcaculatorinput”),因为它在该行之后崩溃。
答案 0 :(得分:0)
问题在于尝试将输入+
解析为代码第13行中的整数(以及stdin上的第一个输入)。您可以将来电从.nextInt()
切换为.nextLine()
,并将z
的类型更改为String
public static void main (String[] args) throws java.lang.Exception
{
System.out.println("setcaculatorinput");
Scanner sc = new Scanner(System.in);
//switch z out for a String instead of an int, and use .nextLine()
String z = sc.nextLine();
System.out.println("setvalueA");
int a = sc.nextInt();
System.out.println("setvalueB");
int b = sc.nextInt();
...
}
答案 1 :(得分:0)
1)首发将第17行更改为String z = sc.next();
你正在读取整数,传递字符,并进一步将其视为字符串
2)在你的每个if语句之后,你有;
所以每个块之后都会被执行
答案 2 :(得分:0)
System.out.println("setcaculatorinput");
Scanner sc = new Scanner(System.in);
int z = Integer.parseInt(sc.nextLine());
System.out.println("setvalueA");
int a = Integer.parseInt( sc.nextLine());
System.out.println("setvalueB");
基本上发生的事情是,当您正在读取sc.nextInt()的double时,您只读取int,但是当您在sc.nextInt未读取的流上按Enter键时会出现ENDLINE字符( )。
答案 3 :(得分:0)
让我格式化你的代码...... 第一:
if ("+".equals(z))
; // it's an empty condition!
{ // this is an init block
System.out.println(c);
}
您的所有代码"格式化":
public static void main(String[] args) throws java.lang.Exception {
System.out.println("setcaculatorinput");
Scanner sc = new Scanner(System.in);
int z = sc.nextInt();
System.out.println("setvalueA");
int a = sc.nextInt();
System.out.println("setvalueB");
int b = sc.nextInt();
int c, d, e, f;
c = (a + b);
d = (a - b);
e = (a * b);
f = (a / b);
if ("+".equals(z))
;
if ("-".equals(z))
;
if ("*".equals(z))
;
if ("/".equals(z))
;
{ // init block
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
System.exit(0);
}
显示错误是因为您尝试读取非整数字符,读取new Scanner("").nextInt();
的Javadoc并且您将看到它抛出:" InputMismatchException - 如果下一个标记不匹配整数正则表达式,或超出范围"。
我给你一个简短的解决方案,但我不推荐它,因为没有对输入进行检查..
public static void main(String[] args) {
System.out.println("setcaculatorinput");
Scanner sc = new Scanner(System.in);
int result = 0;
System.out.println("setvalueA=");
int a = sc.nextInt();
System.out.println("setOperator=");
String op = sc.next();
System.out.println("setvalueB=");
int b = sc.nextInt();
if ("+".equals(op))
result = a + b;
else if ("-".equals(op))
result = a - b;
else if ("*".equals(op))
result = a * b;
else if ("/".equals(op))
result = a / b;
System.out.println("The result is=" + result);
System.exit(0);
}
答案 4 :(得分:0)
此代码可以使用:
import java.util.Scanner;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.println("setcaculatorinput");
Scanner sc = new Scanner(System.in);
String z = sc.next();
System.out.println("setvalueA");
int a = sc.nextInt();
System.out.println("setvalueB");
int b = sc.nextInt();
int c;
int d;
int e;
int f;
c = ( a + b );
d = ( a - b );
e = ( a * b );
f = ( a / b );
if("+".equals(z))
{
System.out.println(c);
}
if("-".equals(z))
{
System.out.println(d);
}
if("*".equals(z))
{
System.out.println(e);
}
if("/".equals(z))
{
System.out.println(f);
}
System.exit(0);
}
}
谢谢