问题是这样的:
输入两个整数,求和。简单吧!
要求:
1.要有错误处理机制。
2.要能分别错误的不同类型,并且给出不同的错误信息。
3.要考虑以下三个错误,字符,小数还有越界。
不一定要有完整的程序,有个思路也好。
当然,能有完整程序的分值肯定不会低。
这不是昨夜也不是考试,我是一个java的初学者,碰到这样的例子,想了n旧都没想出来一个比较好的办法,所以想听听大家的意见。
输入两个整数,求和。简单吧!
要求:
1.要有错误处理机制。
2.要能分别错误的不同类型,并且给出不同的错误信息。
3.要考虑以下三个错误,字符,小数还有越界。
不一定要有完整的程序,有个思路也好。
当然,能有完整程序的分值肯定不会低。
这不是昨夜也不是考试,我是一个java的初学者,碰到这样的例子,想了n旧都没想出来一个比较好的办法,所以想听听大家的意见。
public static void main(String [] args) {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
boolean wrong = true;
String input = null;
int leftNum = 0;
int rightNum = 0; do {
wrong = true;
System.out.print("输入左运算数: ");
input = read.readLine();
try {
leftNum = Integer.parseInt(input);
}
catch (NumberFormatException e) {
System.out.println("输入错误!");
continue;
}
System.out.print("输入右运算数: ");
input = read.readLine();
try {
rightNum = Integer.parseInt(input);
wrong = false;
}
catch (NumberFormatException ee) {
System.out.println("输入错误!");
continue;
}
}while (wrong);
System.out.println(leftNum + " + " + rightNum + " = " + (leftNum + rightNum));
}
看见你写的程序了,你可能没有明白我的意思。
这样的程序我也写出来了
但是问题是不能判断是那种输入错误。
我要求的第二条说得很明白,对于不同的错误要给出不同的错误信息。
比如:我输入了“a“,要显示“字符不能计算!”
我输入了“0.5”,要显示“小数不能计算”
我输入了“500000000000”,要显示“输入的数字过于大了。”
非常感谢你们的参与,你们如果有时间和经历的话,我请求你们也动手弄弄,问题可能没有你们想得那么简单。
虽然没有达到我的要求,不过分我还是会给的。(说了见者有份么,如果人多的话我会在开一贴的,这个大家请放心。)
多谢支持!
public class Test
{
public static void main(String[] args)
{
String s1 ="";
String s2 ="";
int num1 = 0;
int num2 = 0;
int sum = 0;
double d1 = 0.0;
double d2 = 0.0;
try
{
BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter the 1st numer:");
s1=in.readLine();
System.out.println("Please enter the 2nd numer:");
s2=in.readLine();
}
catch(IOException e)
{
System.out.println("In/Out Error!");
System.exit(0);
}//这里需要加入判断输入的字符串转换成int类型后是否会越界。 try
{
d1 = Double.parseDouble(s1);
d2 = Double.parseDouble(s2);
}
catch (NumberFormatException e)
{
System.out.println("文字ng!");
System.exit(0);
}
//System.out.println(s1+"+"+s2+"="+sum);
try
{
num1 = Integer.parseInt(s1);
num2 = Integer.parseInt(s2);
}
catch (NumberFormatException e)
{
System.out.println("pls enter Integer!");
System.exit(0);
}
sum = num1+num2;
System.out.println(num1+"+"+num2+"="+sum); }
}
谁能帮我想想怎么判断输入的字符串在转换成整形之后是否越界呢?
越界的异常是那个啊?to: yanxiazhiqiu(if the words don't come my way...)
怎么写自己的异常呢,以前没听说过啊,能大概讲一下吗?
同样也谢谢你的支持啊。
{
public static void main(String[] args)
{
String s1 ="";
String s2 ="";
int num1 = 0;
int num2 = 0;
int sum = 0;
double d1 = 0.0;
double d2 = 0.0;
try
{
BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter the 1st numer:");
s1=in.readLine();
System.out.println("Please enter the 2nd numer:");
s2=in.readLine();
}
catch(IOException e)
{
System.out.println("In/Out Error!");
System.exit(0);
} try
{
d1 = Double.parseDouble(s1);
d2 = Double.parseDouble(s2);
if(d1<-32768||d1>32767||d2<-32768||d2>32767)
{
System.out.println("it`s too big!");
System.exit(0);
}
}
catch (NumberFormatException e)
{
System.out.println("文字ng!");
System.exit(0);
}
try
{
num1 = Integer.parseInt(s1);
num2 = Integer.parseInt(s2);
}
catch (NumberFormatException e)
{
System.out.println("pls enter a Integer!");
System.exit(0);
}
sum = num1+num2;
System.out.println(num1+"+"+num2+"="+sum); }
}这是我写的经过我的测试基本满足要求了,大家帮忙测试一下啊,看看还有没有什么漏洞。
给一晚上时间测试吧,明天早上给分。
谢谢各位的支持啊。
说得好,谢谢,我也发现了,呵呵!
正在改呢!
你的分不会少的了。其他人加油啊!
那可以把测试报告发到我的另一个贴上,
那边因为我自己把那个问题解决了,所以剩下好多分。
没地方去啊。http://community.csdn.net/Expert/topic/4400/4400138.xml?temp=.1768762
你说的那个问题我都解决了,呵呵,谢谢你的提醒啊。
你看看现在行了没啊?
import java.io.*;
//import java.text.*;
public class A15_HelloJava
{
public static void main(String[] args)
{
String s1 ="";
String s2 ="";
int num1 = 0;
int num2 = 0;
int sum = 0;
double d1 = 0.0;
double d2 = 0.0;
try
{
BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter the 1st numer:");
s1=in.readLine(); try
{
d1 = Double.parseDouble(s1);
if(d1<-32768||d1>32767)
{
System.out.println("The 1st num is overflow !");
System.exit(0);
}
}
catch (NumberFormatException e)
{
System.out.println("No character pls!");
System.exit(0);
}
try
{
num1 = Integer.parseInt(s1);
}
catch (NumberFormatException e)
{
System.out.println("Please enter a Integer!");
System.exit(0);
}
System.out.println("Please enter the 2nd numer:");
s2=in.readLine(); try
{
d2 = Double.parseDouble(s2);
if(d2<-32768||d2>32767)
{
System.out.println("The 2nd num is overflow !");
System.exit(0);
}
}
catch (NumberFormatException e)
{
System.out.println("No character pls!");
System.exit(0);
}
try
{
num2 = Integer.parseInt(s2);
}
catch (NumberFormatException e)
{
System.out.println("Please enter a Integer!");
System.exit(0);
}
}
catch(IOException e)
{
System.out.println("In/Out Error!");
System.exit(0);
}
sum = num1+num2;
System.out.println(num1+"+"+num2+"="+sum); }
}
这个我已经调试过了,能够分辨各种错误并进行相应处理。import java.io.*;
class Sum {
public static void main(String[] args) {
int sum,num1,num2;
try{
System.out.println(" Please input the first number: ");
num1 = input();
System.out.println(" Please input the second number: ");
num2 = input();
sum = num1 + num2;
System.out.println("Sum is: " + sum);
}catch(Exception e){
System.out.println("error is: " + e);
}
} public static int input(){
int i=0;
double d = 0;
String temp;
boolean result = true;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
while(result){
try {
temp = bf.readLine();
d = Double.parseDouble(temp);
if (d > 2147483647) {
System.out.println("输入的数字过于大了。请重新输入:");
}
else {
if (d < -2147483648) {
System.out.println("输入的数字过于小了。请重新输入:");
}
else {
try {
i = Integer.parseInt(temp);
result = false;
}
catch (NumberFormatException nfe) {
System.out.println("小数不能计算。请重新输入:");
}
} }
}
catch (NumberFormatException ne) {
System.out.println("字符不能计算!请重新输入:");
}
catch (IOException ioe) {
System.out.println("IOException。默认输入为0。");
result = false;
}
}
return i;
}
}
Exception numberfe = new Exception("out boundary!");
.....
if ((num1 > 0 && num2 >0 && sum <0) || (num1 < 0 && num2 <0 && sum >0)){
throw numberfe;
}
System.out.println("Sum is: " + sum);