java 我如何在我的简单老虎机程序中将我的int数组分配给它们的正确字符串?

sh7euo9m  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(111)

我有一个最令人沮丧的时刻在我的生活(第二学期编码挑战).我利用两个列表获得三个随机数,然后我希望这三个随机数被分配到他们的适当的标志像一个老虎机.然而,我的for循环并不像我希望他们...它吐出三个结果每个随机数.
`import java.util.Scanner;导入java.util.Random;导入java.util数组;
public class Uncategorized {
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);
  //System.out.println(symbols[i]);
  }
  
  for (int k = 0; k < symbols.length; ++k)
     for (int j = 0; j < 3; ++j) {
     
     if (symbols[k] == 0) {
         logo[j] = "Cherry";
         
     }
     else if (symbols[k] == 1) {
         logo[j] = "7";
         
     }
     else if (symbols[k] == 2) {
         logo[j] = "Grape";
         
  }
     else if (symbols[k] == 3) {
         logo[j] = "Orange";
         
  }
     else if (symbols[k] == 4) {
         logo[j] = "Lemon";
         
  }
  System.out.println(logo[j] + " ");
     }

System.out.println(“符号#:“+符号[0] +“徽标:“+ logo[0]);System.out.println(“符号#:“+符号[1] +”徽标:“+ logo[1]);System.out.println(“符号#:“+符号[2] +”徽标:“+ logo[2]);”

jv4diomz

jv4diomz1#

这里不应该有嵌套循环。只使用单个循环,在每次迭代中访问两个数组中相同索引处的元素。

for (int i = 0; i < symbols.length; i++) {
    if (symbols[i] == 0) {
        logo[i] = "Cherry";
    } else if 
       // other checks...
}

由于所有可能的symbol值都形成了一个连续的范围,因此索引到所有符号的数组中会更简单,从而避免了一长串if语句(如果它们不连续,则可以使用Map)。

final String[] allSymbols = {"Cherry", "7", "Grape", "Orange", "Lemon"};
for (int i = 0; i < symbols.length; i++) {
    logo[i] = allSymbols[symbols[i]];
}
j8yoct9x

j8yoct9x2#

你不需要第二个内部for循环。你也可以使用一个增强的switch:

for (int k = 0; k < symbols.length; ++k) {
  switch (symbols[k]) {
    case 0 -> logo[k] = "Cherry";
    case 1 -> logo[k] = "7";
    case 2 -> logo[k] = "Grape";
    case 3 -> logo[k] = "Orange";
    case 4 -> logo[k] = "Lemon";
  }
}

相关问题