我是一个字符串来做一个简单的计算器,如果一个人被零除以它不会破坏代码。我真的没有什么理想,我做了什么我可以做什么。我需要得到这个不要school.my家庭作品读取执行加,减,乘和除两个numbers.handle无效异常和算术异常。卡在循环while while循环使用try
import java.util.*;
public class Calcultator {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int w1=0;
int w2=0;
int w3=0;
double i1 = 0;
double i2=0;
String sign1 = null;
double sum=0;
do {
try {
System.out.println("Enter a your first number");
i1=scan.nextDouble();
w1++;
System.out.println("il="+1l);
System.out.println("w1="+w1);
} catch(Exception e) {
System.out.println("you must enter a number");
w1=0;
}
} while(w1==0);
do {
try {
System.out.println("Enter a your first number");
i2=scan.nextDouble();
w1++;
} catch(Exception e) {
System.out.println("you must enter a number");
}
} while(w2==0);
do {
try {
System.out.println("1)/ 2)* 3)- 4)+");
int sign=scan.nextInt();
switch(sign) {
case 1:
if(i1==0 || i2==0){
System.out.println("Zero can not be Devided");
break;
} else {
sign1="/";
break;
}
case 2:
sign1="*";
break;
case 3:
sign1="-";
break;
case 4:
sign1="+";
break;
default :
break;
}
} catch(Exception e) {
System.out.println("you must enter a number");
}
} while(w3==0);
if(sign1=="/") {
sum=i1/i2;
System.out.println(i1 +"/"+i2+"="+sum);
} else if(sign1=="*") {
sum=i1*i2;
System.out.println(i1 +"*"+i2+"="+sum);
} else if(sign1=="-") {
sum=i1-i2;
System.out.println(i1 +"-"+i2+"="+sum);
} else {
sum=i1+i2;
System.out.println(i1 +"+"+i2+"="+sum);
}
scan.close();
}
}
可能的重复http://stackoverflow.com/questions/28623651/scanner-nextline-return-null/28623706#28623706 –
请使用一致的缩进来正确格式化您的代码。目前很难阅读。我怀疑你使用了空格和制表符的组合,这就是为什么它会被破坏。对于SO,如果您只使用空格缩进,则效果最佳,因此“标签”的宽度没有多大差别。 –
提示:你的catch语句是**不**有帮助。它只是告诉你“发生了同样的错误”。将其更改为告诉**发生了哪种错误,例如通过打印其消息和/或堆栈跟踪。而代码格式**很重要**。我还建议在**命名上花费更多时间,因为你使用的名字不会告诉他们背后的事情。 – GhostCat