如何在简易老虎机程序中为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]); } }
关键改动说明
- 移除内层
j循环,让每个symbols[k]直接对应赋值给logo[k],避免单个随机数覆盖整个logo数组 - 调整输出逻辑,在单个循环内逐个输出符号,确保每个随机数只对应一个输出结果
- 保留末尾的验证输出,方便确认随机数与符号的对应关系是否正确
内容的提问来源于stack exchange,提问作者EliKhan
相关产品推荐
相关产品推荐

