import java.util.Scanner; public class StringTest { public static void main(String[] args) { String s1=null; String s2=null; //先初始化字符串为空 Scanner scanner=new Scanner(System.in); try { System.out.println("请输入字符串一:"); s1=scanner.next(); //用于接收输入的字符串 System.out.println("请输入字符串二:"); s2=scanner.next(); }catch (Exception e){ System.out.println(e.getMessage()); } int i1= Integer.parseInt(s1); //把字符串转化为String表示的int值 int i2= Integer.parseInt(s2); float f1=Float.parseFloat(s1); float f2=Float.parseFloat(s2); System.out.println("字符串拼接:"+strAdd(s1, s2)); System.out.println("整数相加:"+intAdd(i1, i2)); System.out.println("浮点数相加:"+floatAdd(f1, f2)); } public static String strAdd(String s1,String s2){ return s1+s2; } public static int intAdd(int a,int b){ return a+b; } public static String floatAdd(float f1,float f2){ return String.valueOf(f1+f2); } }
时间: 2024-02-14 20:09:35 浏览: 66
这段代码的实现和我之前给出的代码实现方法类似,但是存在一些问题:
1. 在输入字符串时,应该用 `scanner.nextLine()` 方法,而不是 `scanner.next()` 方法。因为 `next()` 方法只会读取到空格之前的字符,而 `nextLine()` 方法会读取整行字符,包括空格。因此,如果输入的字符串中包含空格,使用 `next()` 方法就只能读取到空格之前的部分,导致后面的转换失败。
2. 如果用户输入的字符串不能转换为整数或浮点数,那么在转换时就会抛出 `NumberFormatException` 异常。但是这段代码中并没有对这个异常进行处理,而是直接将异常信息打印出来,这样并不能避免程序崩溃。应该使用 `try-catch` 语句来捕捉异常,并给出友好的提示信息。
3. 在浮点数相加的方法中,将结果转换为字符串时直接使用了 `String.valueOf()` 方法,这样会丢失精度。应该使用 `String.format()` 方法来保留小数点后两位。
下面是修改后的代码:
```java
import java.util.Scanner;
public class StringTest {
public static void main(String[] args) {
String s1 = null;
String s2 = null;
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入字符串一:");
s1 = scanner.nextLine();
System.out.println("请输入字符串二:");
s2 = scanner.nextLine();
// 如果输入的字符串不能转换为整数或浮点数,就会抛出异常
int i1 = Integer.parseInt(s1);
int i2 = Integer.parseInt(s2);
float f1 = Float.parseFloat(s1);
float f2 = Float.parseFloat(s2);
System.out.println("字符串拼接:" + strAdd(s1, s2));
System.out.println("整数相加:" + intAdd(i1, i2));
System.out.println("浮点数相加:" + floatAdd(f1, f2));
} catch (NumberFormatException e) {
System.out.println("输入的字符串不符合要求,请重新输入!");
}
}
public static String strAdd(String s1, String s2) {
return s1 + s2;
}
public static int intAdd(int a, int b) {
return a + b;
}
public static String floatAdd(float f1, float f2) {
return String.format("%.2f", f1 + f2);
}
}
```
阅读全文