5
回答
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。[答案如下,但是代码似乎不完整,不知哪里出错,请高手指点]
开发十年,就只剩下这套Java开发体系了   
import java.io.*;
public class Strinput
{
  public static void main(String args[]) {
       String s1=null,s2=null,ss,si,sf;
       int i1,i2;
       float f1,f2;
       BufferedReader strin=new  BufferedReader(new InputStreamReader(System.in));
       try{System.out.print ("输入第一个字符串:" );
           s1= strin.readLine();
           System.out.print ("输入第二个字符串:" );
           s2= strin.readLine();}
       catch(Exception e){ System.out.println(e.getMessage());}
       i1 = Integer.parseInt(s1);
       i2 = Integer.parseInt(s2);
       f1 = Float.parseFloat(s1);
       f2 = Float.parseFloat(s2);
       ss = strAdd(s1,s2);
       si = strAdd(i1,i2);
       sf = strAdd(f1,f2);
       System.out.println ("输入的二个字符串相加结果为:"+ss );
       System.out.println ("输入字符串转换为整数相加结果为:"+si );
       System.out.println ("输入字符串转换为浮点数相加结果为:"+sf );
    }
   String strAdd(String str1,String str2) {
        return str1+str2;
}
String strAdd(int int1,int int2) {
return  String.valueOf(int1+int2);
}
String strAdd(float flt1,float flt2) {
return  String.valueOf (flt1+flt2);
}
 } 
但是运行结果为:

请输入第一个字符串:fff
请输入第二个字符串:ggg
For input string: "fff"

举报
刀锋
发帖于5年前 5回/4K+阅
共有5个答案 最后回答: 5年前
For input string: "fff"这是个错误~字符串转换错误,应该是 i1 = Integer.parseInt(s1); i2 = Integer.parseInt(s2);中的一个,你输入必须是数字吧,为什么输入fff呢
--- 共有 1 条评论 ---
刀锋多谢指教! 可是题中说“要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃”,提示给用户如何写哪?[如何编写代码,提醒用户重新输入] 5年前 回复
你把fff或者ggg转换成数字,当然会不对了。。你应该输入数字啊。。
--- 共有 10 条评论 ---
刀锋回复 @freesnow : http://www.oschina.net/question/1055150_138108 我改过之后的代码,是这样的吗? 5年前 回复
freesnow回复 @刀锋 : 你说的两个异常是指哪两个异常?你贴的代码不对是因为你try错地方了,输入那是不会抛出异常的。你应该把输入和parse写到循环里,不抛出异常的时候才跳出循环 5年前 回复
刀锋回复 @freesnow : 明白了,已经好啦。 可如何编写catch(){.... }内编码让其跳转,重新输入? 还有为啥try catch两次,用一个try {}catch(){}不能抓取两个异常吗? 5年前 回复
刀锋回复 @freesnow : 还是没解决,, 5年前 回复
freesnow回复 @刀锋 : 你说的已经try,catch了不会是你贴出来的代码里输入那一块的try,catch吧。。你在那try,catch干嘛,异常是在你parseInt,parseFloat的时候发生的。。如果你不是说的那的话,把你的新代码贴出来吧 5年前 回复
import java.io.*;

public class Strinput {
	public static void main(String args[]) {
		String s1 = null, s2 = null, ss, si, sf;
		int i1, i2;
		float f1, f2;
		BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
		try {
			System.out.print("输入第一个字符串:");
			s1 = strin.readLine();
			System.out.print("输入第二个字符串:");
			s2 = strin.readLine();
			i1 = Integer.parseInt(s1);
			i2 = Integer.parseInt(s2);
			f1 = Float.parseFloat(s1);
			f2 = Float.parseFloat(s2);
			ss = strAdd(s1, s2);
			si = strAdd(i1, i2);
			sf = strAdd(f1, f2);
			System.out.println("输入的二个字符串相加结果为:" + ss);
			System.out.println("输入字符串转换为整数相加结果为:" + si);
			System.out.println("输入字符串转换为浮点数相加结果为:" + sf);
		} catch (Exception e) {
			System.out.println("我没有崩溃~我没有崩溃~");
		}
	}

	static String strAdd(String str1, String str2) {
		return str1 + str2;
	}

	static String strAdd(int int1, int int2) {
		return String.valueOf(int1 + int2);
	}

	static String strAdd(float flt1, float flt2) {
		return String.valueOf(flt1 + flt2);
	}
}


--- 共有 3 条评论 ---
刀锋回复 @Shazi199 : 抱歉,不会写代码。求指点 5年前 回复
Shazi199回复 @刀锋 : 加个flag,把输入代码块加入do/while块里,catch到错误以后改变flag状态,while检测flag状态以确定是否需要重新输入 5年前 回复
刀锋多谢指教! 可是题中说“要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃”,提示给用户如何写哪?[如何编写代码,提醒用户重新输入] 5年前 回复
只需要循环遇到错误,然后提示再次输入就行了,
第一个输入代码如下:
while(sl==null){
 try{
  System.out.print ("输入第一个字符串:" ); 
  s1= strin.readLine(); 
  i1 = Integer.parseInt(s1); 
 }catch(Exception e){
  System.out.print ("格式错误,只能输入整数:" ); 
  s1=null;
 }
}


这个用正则去匹配。写一个Utils方法,区分整数和浮点数就行了。整数就用int,浮点数就用double。字符串用String。

从开发经验来看,用valueOf用的比较多。

顶部