过去3个小时我一直在努力解决这个问题,我很沮丧。如果有人能帮助我,我会非常感激。程序必须生成10个随机整数,然后它必须打印出整数行并将连续的整数组合在一起
实施例: 4 3 3 4 0 0 1 3 0 4 4 5 2 2 5 4 5 1 2 2 分组后: 4(3 3)4(0 0)1 3 0(4 4)5(2)2 5 4 5 1(2 2)
Heres是我的代码
package week6assignments;
import java.util.Random;
public class Question2REal
{
public static void main(String[] args) {
Random rand = new Random();
int[] rolls = new int[20];
int input;
int x = 1;
boolean found = false;
for (int i = 0; i < rolls.length; i++) {
input = rand.nextInt(6);
rolls[i] = input;
}
System.out.println("Raw data output after 20 dice rolls");
for (int i = 0; i < rolls.length; i++) {
System.out.print(rolls[i] + " ");
}
System.out.println("");
System.out.println("Data after grouping runs together");
for (int i = 0; i < rolls.length; i++) {
++x;
if (x > 19) {
x = 19;
}
if (rolls[i] == rolls[x] && found == false) {
System.out.print("(");
found = true;
if (rolls[i] == rolls[x] && found == true) {
System.out.print(rolls[i]);
}
}
if (rolls[i] > rolls[x] || rolls[i] < rolls[x] && found == true) {
found = false;
}
System.out.print(rolls[i]);
}
}
}
我知道这个程序已经完成了它应该做的事情,但我已经尝试了100个我能想到的东西,并且无法弄清楚或在网上找到一个例子。 :(
答案 0 :(得分:0)
我真的很困惑你在你的代码中尝试做的事情(就像你说的那样,离开了)所以忘掉你在最后一个for循环中已经拥有的一切。
首先,您要确定当前的数字是否与下一个数字相同,以便将它们组合在一起。就像这样。
if (rolls[i] == rolls[i+1]) {
System.out.print("(" + rolls[i]);
}
现在,在您的问题和示例中,尚不清楚在是否存在超过2个相同数字的情况下,预期的操作是什么。所以我假设你会把它包含在小组中。
在这种情况下,你做一个while循环(在if
内和print
之后),检查以下所有数字是否相同。
i++;
while (rolls[i] == rolls[i+1]) {
System.out.print(" " + rolls[i]);
i++;
}
最后,我们一直在打印最后一个数字而不是当前数字,所以如果下一个数字不再与当前数字相同,它将退出while循环,我们必须打印当前数字并关闭托架。所以像这样......
System.out.print(" " + rolls[i] + ") ");
现在让我们来处理其他情况。简单,只需打印数字然后继续......
} else {
System.out.print(rolls[i] + " ");
}
当然,这并不完美,仍然需要处理一些边缘情况。如果while循环遍历最后一项怎么办?现在我们有一个ArrayIndexOutOfBound。所以这里有一点调整......
while ((i+1) < rolls.length && rolls[i] == rolls[i+1])
但是那么在最后一次for循环迭代中第一个if
呢?可能需要相同的修复...
if ((i+1) < rolls.length && rolls[i] == rolls[i+1])
我基本上完成了所有的工作并为你思考。如果您理解我所解释的内容,您应该能够轻松地将这些部分组合在一起。
答案 1 :(得分:-4)
家庭作业准备就绪。 ;)
import java.util.Random;
public class Homework {
public static void main(String[] args) {
Random rand = new Random();
Integer last = null;
boolean equals = false;
for (int i = 0; i < 20; i++) {
int newInteger = rand.nextInt(6);
if(Integer.valueOf(newInteger).equals(last)) {
if(!equals) System.out.print("( ");
equals = true;
System.out.print(last+" ");
} else {
if(last != null) System.out.print(last+" ");
if(equals) System.out.print(") ");
equals = false;
}
last = newInteger;
}
System.out.print(last);
if(equals) System.out.print(" )");
}
}