目次
プログラミングを学ぶ学生の多くは、当てっこゲームという言葉を聞いたことがあると思います. 学習サイクルの放課後の宿題にこのトピックがあると思います. ちょうど今、ChatGPTが燃えているときに、私もこのコードを書いてみました.残念ながら、そのコードにはバグがあり、数を推測する機能をうまく実現できていません。
ChatGPTを使って書いたコードは以下の通り
import java.util.Random;
import java.util.Scanner;
public class GuessNumberGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int numberToGuess = random.nextInt(100) + 1;
int numberOfTries = 0;
boolean win = false;
System.out.println("欢迎来到猜数字游戏!");
while (!win) {
System.out.print("请输入一个 1 到 100 之间的整数:");
int guess = scanner.nextInt();
numberOfTries++;
if (guess == numberToGuess) {
System.out.println("恭喜你,猜对了!");
System.out.println("你猜了 " + numberOfTries + " 次。");
win = true;
} else if (guess < numberToGuess) {
System.out.println("猜的数字太小了,请再试一次。");
System.out.println("范围是 " + (guess + 1) + " 到 100。");
} else {
System.out.println("猜的数字太大了,请再试一次。");
System.out.println("范围是 1 到 " + (guess - 1) + "。");
}
}
scanner.close();
}
}
这个程序首先生成一个 1 到 100 之间的随机整数,然后提示用户输入一个整数并进行比较,直到用户猜对为止。程序还会记录用户猜的次数并在猜对后输出。如果用户猜错了,程序会提示用户当前猜测的数字不在正确的范围内,并提示正确的范围。
既存の問題
デバッグ後、彼のプロンプトの範囲はそれほど正確ではなく、対応する例外処理メカニズムがないことがわかりました。
改善された Java コード
package mySourceCode;
import java.util.Scanner;
public class guessNumber {
public static void main(String[] args) {
guessNumbers();
}
/**
* 猜数游戏
*/
public static void guessNumbers() {
Scanner scan = new Scanner(System.in);
System.out.println("数字范围:[1,100]");
System.out.println("请输入你的猜测:");
int max = 0;
int min = 101;
try {
int inPut = scan.nextInt();
int ints = (int) (Math.random() * 100 + 1);// [1,100]
int counts = 0;
while (inPut != ints) {
counts++;
if (inPut > ints) {
System.out.println("\t大了,已尝试:" + counts + " 次");
if (max != 0) {
max = Math.min(max, inPut);
} else {
max = inPut;
}
if (min == 101) {
System.out.println("\t范围:(0 , " + max + ")");
} else {
System.out.println("\t范围:(" + min + " , " + max + ")");
}
} else {
System.out.println("\t小了,已尝试:" + counts + " 次");
if (min != 101) {
min = Math.max(min, inPut);
} else {
min = inPut;
}
if (max == 0) {
System.out.println("\t范围:(" + min + " , 100)");
} else {
System.out.println("\t范围:(" + min + " , " + max + ")");
}
}
inPut = scan.nextInt();// 实现持续输入,直到正确为止
}
System.out.println("\t对了,共尝试:" + (counts + 1) + " 次");
} catch (Exception es) {
System.out.println(es.getMessage());
}
}
}
以上のことからわかるように、ChatGPT は確かにコードを書くことができますが、基本的な例外処理や境界条件の考慮はできません.同時に、バグがある可能性があり、人間が書いたコードとは明確なギャップがあります.