You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在简易老虎机程序中为int数组元素匹配对应String标识?

你的问题出在嵌套for循环上:外层循环遍历每个随机生成的symbols[k]时,内层循环又把j从0到2遍历一遍,这就导致每个symbols[k]会给logo数组的三个位置都赋值成同一个符号,并且每次赋值后都执行一次System.out.println,所以每个随机数对应输出三个结果。

修复方案

symbols和logo数组长度都是3,两者是一一对应的关系,每个symbols[k]只需要对应赋值给logo[k],不需要内层循环。修正后的代码如下:

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;

public class LabProgram {

    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        final int numReels = 3;
        Random random = new Random(); 

        int[] symbols = new int[numReels];
        String[] logo = new String[numReels];
        
        // 生成三个随机数
        for (int i = 0; i < symbols.length; ++i) {
            symbols[i] = random.nextInt(5);
        }
        
        // 一一对应转换符号,无需嵌套循环
        for (int k = 0; k < symbols.length; ++k) {
            if (symbols[k] == 0) {
                logo[k] = "Cherry";
            } else if (symbols[k] == 1) {
                logo[k] = "7";
            } else if (symbols[k] == 2) {
                logo[k] = "Grape";
            } else if (symbols[k] == 3) {
                logo[k] = "Orange";
            } else if (symbols[k] == 4) {
                logo[k] = "Lemon";
            }
            // 逐个输出老虎机符号
            System.out.print(logo[k] + " ");
        }
        System.out.println(); // 换行
        
        // 验证随机数与符号的对应关系
        System.out.println("symbol #: " + symbols[0] + " logo: " + logo[0]);
        System.out.println("symbol #: " + symbols[1] + " logo: " + logo[1]);
        System.out.println("symbol #: " + symbols[2] + " logo: " + logo[2]);
    }
}

关键改动说明

  1. 移除内层j循环,让每个symbols[k]直接对应赋值给logo[k],避免单个随机数覆盖整个logo数组
  2. 调整输出逻辑,在单个循环内逐个输出符号,确保每个随机数只对应一个输出结果
  3. 保留末尾的验证输出,方便确认随机数与符号的对应关系是否正确

内容的提问来源于stack exchange,提问作者EliKhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:52:18