春风秋雨后 2021-09-29 22:17 采纳率: 66.7%
浏览 33
已结题

这里报的是什么错?为什么会报错?



import java.util.Scanner;

/*
 * 随机生成3个数(0-30)
给出3条提示语每次只能输入一个数字
将输入的数字与随机数比较如果猜中一个,三等奖,猜中二个二等奖;猜中三个一等奖
如果没有猜中打印“再来一盘”
 */
public class Randoms {
    /**
     * arr1 用来存放随机生成的数 arr2 用来存放输入的值
     */
    int[] arr1 = new int[3], arr2 = new int[3];
    // 记录正确的次数
    int numberOfRandom;
    private int i = 0, j = 0;

    public void getRandomNumber() {

        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = (int) Math.random() * 31;
        }
        // 保证数组中每个数值不相等
        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr1.length; j++) {
                if ((arr1[i] == arr1[j]) && (i != j)) {
                    getRandomNumber();
                }
            }
        }
        System.out.println("加载完毕!");
    }

    /**
     * 获取键盘的输入
     */
    public void getInput() {

        Scanner scanner = new Scanner(System.in);
        for (i = j; i < arr2.length - i; i++) {
            System.out.print("请输入第" + (i + 1) + "个数:");
            arr2[i] = scanner.nextInt();
            System.out.println();
            if (arr2[i] > 30 || arr2[i] < 0) {
                System.out.println("请重新输入!");
                j = i;
                getInput();
            }
        }
    }

    /*
     * arr1[i] - 1 操作使因为但输入两次相同的值是,也会增加一次增加一次猜对机会
     */
    public void ifRandom() {
        for (int i = 0; i < arr2.length; i++) {
            for (int j = 0; j < arr1.length; j++) {
                if (arr2[i] == arr1[j]) {
                    numberOfRandom++;
                    arr1[i] = -1;
                }
            }
        }
        switch (numberOfRandom) {
        case 1:
            System.out.println("切,才猜中一个,垃圾");
            break;
        case 2:
            System.out.println("猜中两个,哼,运气好罢了");
            break;
        case 3:
            System.out.println("恭喜猜中三个,但还需再接再厉");
            break;
        default:
            System.out.println("哎,一个没中,再来一盘");
            break;

        }
    }

    public static void main(String[] args) {
        boolean bool = true;
        while (bool) {
            Randoms random = new Randoms();
            random.getRandomNumber();
            random.ifRandom();
            System.out.println("是否要再来一次?输入true以继续,输入false以退出。");
            Scanner scanner = new Scanner(System.in);
            bool = scanner.nextBoolean();
        }

    }
}

img

  • 写回答

2条回答 默认 最新

  • yangbocsu Java领域新星创作者 2021-09-29 22:31
    关注

    img

    改为:

    
    arr1[i] = (int) (Math.random() * 31);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 9月30日
  • 创建了问题 9月29日

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?