目录
使用ChatGPT编写的代码如下
存在的问题
改进的Java代码
猜数游戏相信很多学编程的同学都听说过,在学习循环的那一节的课后作业相信就有这个题目,正好现在ChatGPT正火的时候,我也尝试了让它写一下这个代码,很遗憾,它的代码存在bug,并不能很好的实现猜数的功能。
使用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的确实可以编写出来代码,但是却无法做到基本的异常处置及边界条件考量,同时也可能存在bug,与人把编写的代码存在明显的差距。