Java 替换字符串[]中的一些随机选择

Java 替换字符串[]中的一些随机选择,java,grammar,Java,Grammar,我有这样的想法: import java.util.Random; public class gramatica { public static void main(String[] args) { String [] Vt = {"S","R","L"}; String [] Vn = {"a","b","c","d","e","f"}; String [] S = { "aS","bS","cR","dL" }; St

我有这样的想法:

import java.util.Random;

public class gramatica {
public static void main(String[] args) {

    String [] Vt = {"S","R","L"};
    String [] Vn = {"a","b","c","d","e","f"};

    String [] S = {

            "aS","bS","cR","dL"
    };

    String[] R = {
            "dL","e"
    };

    String []L = {

            "fL","eL","d"
    };
    System.out.println(S[0]);
    String random = (S[new Random().nextInt(S.length)]);
    String chop = (S[new Random().nextInt(S.length)]);

    System.out.println("S->"+random);
如果在从S中进行随机选择并获得例如“cR”之后,我想替换字符串[]R中的一些随机选择,而不是“R”,我应该如何进行呢? 例子:
看,我从S开始,然后我从S得到random,如果我得到cR,我只用R字符串数组中的random替换R。S->cR->cdL(而不是R我放dL)

我想这就是你想要的:

import java.util.Random;

public class gramatica {
  public static void main(String[] args) {

    String [] Vt = {"S","R","L"};
    String [] Vn = {"a","b","c","d","e","f"};

    String [] S = {

            "aS","bS","cR","dL"
    };

    String[] R = {
            "dL","e"
    };

    String []L = {

            "fL","eL","d"
    };
    //System.out.println(S[0]);
    String rule = "S";

    Random r = new Random();

    // Make a loop
    while(true) {
      if(rule.contains("S")) {
        rule = rule.replaceFirst("S", S[r.nextInt(S.length)]);
        continue;
      };
      if(rule.contains("R")) {
        rule = rule.replaceFirst("R", R[r.nextInt(R.length)]);
        continue;
      };
      if(rule.contains("L")) {
        rule = rule.replaceFirst("L", L[r.nextInt(L.length)]);
        continue;
      };

      // Nothing to change, break loop
      break;
    };

    // Now we got a random possible rule for S! :)
    System.out.println("S->"+rule);
  };
};

此代码将为您的语法生成一个随机可能的字符串。:)

好的,第一件事首先:这个问题是关于Java的,所以标签就是这样。是的,很抱歉这是上一个问题。问题是,当它是例如cR时,我不知道如何只替换R。我真的不理解这个问题。。。我试过了,我从S开始,然后从S得到random,如果我得到cR,我只用R字符串数组中的random替换R。S->cR->cdL(而不是R我放dL)非常感谢您的帮助!这将是足够的,所以,请点击“接受答案”,这样我在这里得到一些声誉=普东:3.再次感谢你