我需要一个随机数1-4 "X“,而其余的6-9个字符都将是"O”。整个输出需要打印到控制台内的10行中。
到目前为止,我可以从"X“的1-4中生成6 "O”和一个随机数。然而,我不知道如何使X在O中随机传播,而O将填充丢失的X。
换句话说:如果代码只生成2 "X“,我需要8 "O",这样才能生成10个字符。现在我还得把它打印成10行。我碰巧对java非常陌生,所以下面的代码是我到目前为止所掌握的全部代码。
import java.util.Random;
class GFG {
public static void main(String[] args)
{
test();
}
public static void test() {
Random r = new Random();
int i = r.nextInt(4)+1;
for (int k=5; k<=5; k++) {
for (int m=0; m<=k; m++) {
System.out.println("O");
}
for (int j=0; j<=i; j++) {
System.out.println("X");
}
}
}
} 发布于 2020-09-16 09:21:50
此方法生成一行与您想要的行类似的代码:
public static String randomLine() {
ArrayList<Character> characters= new ArrayList<>();
Random random=new Random();
int k=random.nextInt(4) + 1;
for (int i = 1; i <= k; i++) {
characters.add('X');
}
while(characters.size()<10) {
characters.add('O');
}
Collections.shuffle(characters); // Shuffling !!!
String str="";
for(int i=0;i<10;i++)
str=str+characters.get(i);
return str;
}如果需要,可以将返回类型更改为ArrayList<Character>。
现在,要获得10行这样的代码,您可以运行以下代码:
for(int i=0;i<10;i++)
System.out.println(randomLine());发布于 2020-09-16 09:26:17
在创建包含随机数量Xs的数组/列表之后,您可以使用现有的Arrays.shuffle / Collections.shuffle随机化数据的数组/集合:
public static List<String> getRandomXOs() {
Random random = new Random();
int countX = 1 + random.nextInt(4);
List<String> xos = IntStream.range(0, 10)
.mapToObj(i -> i < countX ? "X" : "O")
.collect(Collectors.toList());
Collections.shuffle(xos);
return xos;
}
// -------
// test
for (int i = 0; i < 5; i++) {
System.out.println(getRandomXOs());
}输出(随机):
[O, O, O, O, X, X, X, O, O, X]
[X, O, O, O, O, X, X, O, X, O]
[O, O, O, O, O, X, O, O, O, X]
[X, O, O, O, O, O, O, O, O, O]
[O, X, X, O, O, O, O, X, O, O]发布于 2020-09-16 09:53:25
使用Java8 Stream库,您可以使用更少的代码行更有效地解决问题。
此test()函数具有输入x,该输入控制从1到x将打印多少个X,而控制有多少1X或E 111OOE 212的n将按您的要求在单独的行中打印。
import java.util.Random;
import java.util.stream.*;
class CFG {
public static void main(String[] args) {
test(4, 10);
}
public static void test(int x, int n) {
Random random = new Random();
int countX = 1 + random.nextInt(x);
String str = random
.ints(1, n + 1)
.distinct()
.limit(n)
.mapToObj(i -> i <= countX ? "X" : "O")
.collect(Collectors.joining("\n"));
System.out.println(str);
}
}随机输出:
X
O
O
X
O
O
O
O
X
Ohttps://stackoverflow.com/questions/63916624
复制相似问题