2013-10-10 206 views
0

運行是一系列相鄰的重複值。編寫一個程序,生成一系列隨機擲骰子並打印骰子值,只標記最長的遊程。程序應該採取作爲輸入模擲的總數(例如10),然後打印:隨機骰子發生器

1 6 6 3(2 2 2 2 2)5 2

IM在如何比較各數相當混亂以獲得正確的輸出。也許使用數組來存儲值。任何答案或輸入將有助於謝謝你!

import java.util.Random; 
import java.util.Scanner; 

public class Dice 
{ 
Random generator = new Random(); 
Scanner keyboard = new Scanner(System.in); 

public void DiceCount() 
{ 
int count; 
int sides = 6; 
int number; 
System.out.println("How many die? "); 
count = keyboard.nextInt(); 
for(int i=0; i < count; i++) 
{ 
    number = generator.nextInt(sides); 
    System.out.print(number); 
} 

} 

}

+0

嘗試使用'List'(也許是'ArrayList')。 – arshajii

+1

1.是的,您可以使用數組,2.學習使用循環,以便您可以遍歷數組來完成工作。 3.學習正確縮進你的代碼。 4.'怎麼可能會死?'對我來說這聽起來如此殘酷 –

+0

製作一個長度數組的數組,並將數字存儲在那裏。跟蹤4個變量:最長重複序列的長度,當前序列的長度,最長重複序列開始時的索引以及當前重複序列的起始索引。 – LazyCubicleMonkey

回答

0
import java.util.Random; 
import java.util.Scanner; 

public class Dice { 
    Random generator = new Random(); 
    Scanner keyboard = new Scanner(System.in); 

    public void DiceCount() { 
     int sides = 6; 
     System.out.println("How many die? "); 
     int count = keyboard.nextInt(); 
     int[] array = new int[count]; 
     int longestLength = 1, currentLength = 1, longestLengthIndex = 0, currentLengthIndex = 1; 
     int currentNum = -1; 
     for (int i = 0; i < count; i++) { 
      array[i] = generator.nextInt(sides); 
      System.out.print(array[i] + " "); 
      if (currentNum == array[i]) { 
       currentLength++; 
       if (currentLength > longestLength) { 
        longestLengthIndex = currentLengthIndex; 
        longestLength = currentLength; 
       } 
      } else { 
       currentLength = 1; 
       currentLengthIndex = i; 
      } 
      currentNum = array[i]; 
     } 
     System.out.println(); 
     for (int i = 0; i < count; i++) 
      System.out.print((i == longestLengthIndex ? "(" : "") + array[i] + (i == (longestLengthIndex + longestLength - 1) ? ") " : " ")); 
    } 
} 

注意:這隻會取第一個最長的範圍。所以如果你有1123335666它會做112(333)5666。 如果你需要112(333)5(666)或1123335(666),那我就把它留給你。這是非常微不足道的。

+0

非常感謝幫助我的朋友 –

2

首先,int[] numbers = new int[count];更換int number;。接下來,用numbers[i] = ...代替number = ...

這會給你一個隨機數組的數組(不要打印它們!)。當你生成你的數字時,記下你連續得到多少個相等的數字(爲此添加一個特殊的計數器)。還要添加一個變量,該變量存儲迄今爲止最長運行時間的長度。每當你得到一個與前面的數字相等的數字時,增加計數器;否則,將計數器與最大值進行比較,必要時更改最大值,並將計數器設置爲1。當您更新最大值時,請標記運行開始的位置(您可以從當前位置和運行的長度中看出)。

現在是檢測最長運行時間的時候了:通過numbers數組,並在運行開始處放置一個左括號。當您到達運行結束時放入一個右括號,並完成打印以完成作業的輸出。