2015-02-06 3 views
0

이 프로그램이 가장 긴 행보를 표시하는 방법을 알아낼 수 있습니까? 두 개의 주사위를 굴리고 각 주사위의 합계를 기록합니다. 이제는 가장 긴 행에서 가장 길었던 주사위가 14999966에서 시작된 8 개의 7이 뛰었습니다. "RollingDice Java 프로그램 최장수 행진

import java.util.Scanner; 
import java.text.DecimalFormat; 

public class RollThoseDice { 
    /* Author: Name 
    * Assignment: Third Program 
    */ 
    public static void main(String[] args) { 
    Scanner kbd = new Scanner(System.in); 
    int timesRolled, randomOutSum; 
    DecimalFormat df = new DecimalFormat ("#.###"); 

    System.out.println("Name: " 
       + "\nAssignment: Third Program" 
       +"\nExtra Credit: Percentage is displayed in three decimal places"); 

    int[] d = new int[13]; 
    for (int i = 2; i < 13; i++) d[i] = 0; 

    int N=0; 
    boolean againA = true; 
    while(againA) { 
     try{ 
      System.out.print("\nHow Many Rolls? "); 
      N =kbd.nextInt(); 
      againA = false; 

     } catch(Exception e) { 
      System.out.println("Invalid Input"); 
      kbd.next(); 
     } 
    } 

    for (int k = 0; k < N; k++) { 
    int diceOut1 = (int) (Math.random()*6+1); 
    int diceOut2 = (int) (Math.random()*6+1); 

     int diceSum = diceOut1 + diceOut2; 
     d[diceSum]++;  
    } 

    for (int i = 2; i < 13; i++) 

     System.out.println("Total " + i + " happened " 
       + df.format((double) (d[(int) i]/(double) N) * 100) 
       + "% of the time."); 
    } 

} 
+0

지금까지 시도한 것을 보여줄 수 있습니까? – doelleri

+0

[기본 Java 주사위 프로그램 - 가장 긴 행보 찾기에 문제가 있습니다.] (http://stackoverflow.com/questions/28354928/basic-java-dice-program-trouble-finding-longest-streak)와 중복되는 것으로 보입니다. – doelleri

답변

0

가장 긴 실행은 출력 매개 변수는 무엇인가, 롤 그래서 1479966.

에 시작 8 7의의 실행했다?

롤, 런 길이 또는 롤 수, 롤 수와 같습니다.

흠, 여러 변수를 유지하면 무엇이있을 수 있습니까?

알고 계시 겠지만 모델 클래스을 작성하겠습니다.

public class RollStreak { 

    private final NumberFormat NF = NumberFormat.getInstance(); 

    private int roll; 
    private int rollCount; 

    private long rollNumber; 

    public RollStreak(int roll, long rollNumber, int rollCount) { 
     this.roll = roll; 
     this.rollNumber = rollNumber; 
     this.rollCount = rollCount; 
    } 

    public int getRoll() { 
     return roll; 
    } 

    public int getRollCount() { 
     return rollCount; 
    } 

    public long getRollNumber() { 
     return rollNumber; 
    } 

    @Override 
    public String toString() { 
     StringBuilder builder = new StringBuilder(); 
     builder.append("The computer rolled a "); 
     builder.append(roll); 
     builder.append(" "); 
     builder.append(rollCount); 
     builder.append(" times in a row starting at roll number "); 
     builder.append(NF.format(rollNumber)); 
     builder.append("."); 

     return builder.toString(); 
    } 

} 

모델 클래스를 사용하면 필드 그룹을 하나의 개체로 취급 할 수 있습니다.

나는 전체 답변을 포기하고 싶지 않습니다. 이 모델 클래스 인스턴스를 작성하고 가장 긴 줄무늬를 얻는 방법을 결정해야합니다. 힌트 : 하나 이상의 긴 줄무늬가있을 수 있습니다.