【问题标题】:Make a string variable from a random array从随机数组中创建一个字符串变量
【发布时间】:2014-09-19 09:59:32
【问题描述】:
import java.util.Random;

public class DotComTestDrive {

    public static void main(String [] args) {

        String stringOfWords[] = {"Do", "You", "Like", "Me"};
        boolean correctOrder = true;
        int numberOfResets = 0;
        String correctString;
        String realString[];

        while (correctOrder == true) {

            System.out.println();

            for (int x = 0 ; x < 4 ; x++) {

                int rand = (int) (Math.random() * 4);

                System.out.print(stringOfWords[rand]);
                System.out.print(" ");

                numberOfResets++;
            }
            // Place If statement here to change correctOrder to false when the new string is "Do You Like Me "

        }

        System.out.println(numberOfResets);
    }
}

我的主要目标是尝试获得新的随机四个单词 它打印到 String[] 中,所以我可以使用 If 语句 查看字符串是否与原始字符串匹配。然后我会制作boolean "correctOrder" 为false,结束循环。

如果它不是一个很好或明确的问题,我知道这很简单,很抱歉。 只是尝试学习基础知识,任何帮助,谢谢!

【问题讨论】:

  • 你只想随机排列数组中的单词吗?
  • 顺便说一句,为什么有人会在布尔语句中使用boolean == true?为什么不只是while(correctOrder)
  • 首先,我建议您将 correctOrder 的名称更改为 incorrectOrder ,或者切换布尔状态。该变量名具有误导性,正确Order=false 意味着字符串的顺序正确是没有意义的。
  • 看看Collections#Shuffle。这是一个静态方法,这意味着您可以从任何地方调用它:)

标签: java arrays string random


【解决方案1】:

我的建议是使用一个列表并在每次循环时随机播放它。

Map<K,V> map = xxxx;
List<Map.Entry<K,V>> list = new ArrayList<Map.Entry<K,V>>(map.entrySet());

// each time you want a different order.
Collections.shuffle(list);

for(Map.Entry<K, V> entry: list) { /* ... */ }

【讨论】:

    【解决方案2】:

    假设你想把这些Strings放在realString中,你应该这样做/

    • 初始化这个Array
    • 在您的for 循环中分配其元素之一。

    例如:

    String realString[] = new String[4];
    
    while(correctOrder == true){
        for(int x = 0; x < 4; x++){ 
            int rand = (int) (Math.random()*4);
            System.out.print(stringOfWords[rand]);
            System.out.print(" ");
    
            realString[x] = stringOfWords[rand];
        }
    }
    

    另外,既然我在做,我建议您更改代码中的一些内容:

    • 无需指定== trueboolean 变量可自行测试。
    • 通常首选使用Random 类(而不是Math)。您可以拥有一个final Random r = new Random() 并通过简单地使用r.nextInt(4)[0, 4[ 范围内获得一个随机int

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2017-10-14
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多