小真的开发日记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。这让我非常兴奋,我的第一个程序运行成功了!

小真的开发日记1:  我的第一个程序和BUG

然而,兴奋的心情很快被现实击碎。我尝试输入“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”时,程序会提示我输入无效,并要求重新输入。这解决了程序崩溃的问题。

这次经历让我明白,程序开发并非一帆风顺,调试错误是不可避免的。 我需要不断学习新的知识和技巧,才能更好地解决问题,写出更健壮的代码。 这个程序虽小,却让我收获颇丰。