小真的开发日记1: 我的第一个程序和BUG
小真的开发日记1: 我的第一个程序和BUG
2024年1月10日
今天,我终于完成了第一个小程序——“数字加法器”。它可以接收两个数字作为输入,并返回它们的和。代码简洁明了,逻辑清晰易懂。我满怀期待地运行了程序,希望它能完美无瑕地工作。
程序的逻辑非常简单:程序提示用户输入第一个数字;然后,程序提示用户输入第二个数字;接着,程序读取用户输入的两个数字;最后,程序计算两个数字的和并输出结果。
```java
import java.util.Scanner;
public class AddCalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print(请输入第一个数字:);
double num1 = input.nextDouble();
System.out.print(请输入第二个数字:);
double num2 = input.nextDouble();
double sum = num1 + num2;
System.out.println(两数之和为: + sum);
input.close();
}
}
```
运行程序后,我输入了两个数字:10和20。程序输出的结果是30。这让我非常兴奋,我的第一个程序运行成功了!
然而,兴奋的心情很快被现实击碎。我尝试输入“abc”和“def”,程序却崩溃了。仔细检查代码,我发现程序只处理了数字输入,对于非数字输入,没有进行任何错误处理。
错误源于Scanner类在读取非数值类型时,会抛出InputMismatchException异常。 我需要添加一个错误处理机制来应对这种情况。
于是我在程序中加入了异常处理代码。
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class AddCalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print(请输入第一个数字:);
double num1 = 0;
double num2 = 0;
boolean validInput = false;
while(!validInput){
try{
num1 = input.nextDouble();
validInput = true;
}catch(InputMismatchException e){
System.out.println(无效的输入,请重新输入数字:);
input.next(); // 清除错误输入
}
}
System.out.print(请输入第二个数字:);
validInput = false;
while(!validInput){
try{
num2 = input.nextDouble();
validInput = true;
}catch(InputMismatchException e){
System.out.println(无效的输入,请重新输入数字:);
input.next();
}
}
double sum = num1 + num2;
System.out.println(两数之和为: + sum);
input.close();
}
}
```
这次,当我输入“abc”时,程序会提示我输入无效,并要求重新输入。这解决了程序崩溃的问题。
这次经历让我明白,程序开发并非一帆风顺,调试错误是不可避免的。 我需要不断学习新的知识和技巧,才能更好地解决问题,写出更健壮的代码。 这个程序虽小,却让我收获颇丰。