配列内に20個のランダムなダイストゥースを生成するプログラムと、ダイ値を出力する を生成するプログラムを作成し、最長のランのみをマークします。 1 2 5 5 3 1 2 4 3 2 2)3 6 5 5 6 3 1 最大長のランが複数ある場合は、最初にマークを付けます。Java Forループ!
私はこの質問に取り組んでおり、このコードはmaxCountをカウントするまで動作します。 しかし、私は最後の結果をプリントアウトすることに固執しています。これは、最後のforループで質問に必要なものをプリントアウトすることを意味しています。 しかし、結果は私が得たいものではありません。どうすればそれを理解できますか?
import java.util.Random;
public class AA {
public static void main(String[] args) {
int count = 1;
int maxCount = 1;
int runEndsAt = 0;
// create array
int[] num = new int[20];
// create random object
Random numbers = new Random();
for (int i = 0; i < 20; i++) {
num[i] = numbers.nextInt(6) + 1;
// added 1 b/c it starts from 0
}
boolean inRun = false;
for (int i = 0; i < num.length; i++) {
if (inRun) {
if (num[i] != num[i - 1]) {
/*
* System.out.print("|" + count +"|");
* System.out.print(") ");
*/ inRun = false;
}
if (inRun) {
System.out.print("|" + count + "|");
count++;
}
}
if (!inRun) {
if (count > maxCount) {
maxCount = count;
runEndsAt = i;
}
count = 1;
if (i < 19)
// comparing index from i to i+1
if (num[i] == num[i + 1]) {
System.out.print("(");
inRun = true;
}
}
}
if (inRun) {
/*
* System.out.print("|" + count +"|"); System.out.print(")");
*/ }
for (int i = 0; i < num.length; i++) {
if (i == runEndsAt - maxCount) {
System.out.println("(");
if (i == runEndsAt) {
System.out.println(")");
}
}
}
}
}
それは(頻繁に人がいない)あなたは、コードブロックを持って素晴らしいことだが、コード自体のフォーマットを見て、それが読めるかどう自問してみてください。 (ヒント:いいえ、遠隔ではありません。)投稿をはっきりさせ、時間を割いていることを実証することで、良い答えを得る機会が増えます。 –
また、 "ランダム"を使用しない例を作成しても、デバッグしようとしているエラーが残っています。次に、エラーに関連していないすべてのコード行を削除します。あなたは、20行のコード(またはそのまわり)までそれを得ることができるはずです。その時点で、何がうまくいかないかを見ることさえできます。 – Teepeemm
私はコードを読むことを修正しようとしました。 –