2014-03-28 7 views
0

내가 묻는 것이 옳은지 나는 잘 모르겠지만 원래는이 것이 메인에서 5 번 실행되었습니다. 그러나 나는 do/while 루프가 같은 것을 할 수 있다고 느꼈다. 하지만 지금은 어레이 샷을 얻을 수 없습니다. 샷에서 바뀌게 만들었습니다. [0]에서 샷을 만들었습니다. [1] 등 샷을 저장합니다. while 루프의 마지막 실행 만 저장합니다. 나는이 방법이 아직 제대로어떻게 배열을 증가시킬 수 있습니까?

import java.util.*; 

public class Final { 
public static void main(String[] args) { 
    int myGameCounter = 1; 
    int [] shotsMade = new int [5]; 
    System.out.print("Enter Player's Free Throw Percentage: "); 
    Scanner input = new Scanner(System.in); 
    int percent = input.nextInt(); 


    //Game 
do{ 
    System.out.println("Game " + myGameCounter + ":"); 
    Random r = new Random(); 
    myGameCounter++; 
    int shotCount = 0; 
    for (int i = 0; i < 10; ++i){ 
     boolean in = tryFreeThrow(percent); 
     if (in) { 
     shotCount++; 
     System.out.print("In" + " "); 
     } 
     else { 
     System.out.print("Out" + " "); 
     } 
    } 
    System.out.println(""); 
    System.out.println("Free throws made: " + shotCount + " out of 10"); 
    System.out.println(""); 
    shotsMade[0]= shotCount;// I need shotsMade[0] to change each loop, shotsMade[1], shotsMade[2], shotsMade[3], shotsMade[4] 
} while (myGameCounter <=5); 

    System.out.println(""); 
    System.out.println("Summary:"); 
    System.out.println("Best game free throws made: " + max(shotsMade)); 
    System.out.println("Worst game free throws made: " + min(shotsMade)); 
    System.out.println("Total Free Throws Made: " + sum(shotsMade) + " " + "out of 50"); 
    System.out.println("Average Free Throw Percentage: " + average(shotsMade) +"%");  


    }  
    public static boolean tryFreeThrow(int percent) { 
    Random r = new Random(); 
    int number = r.nextInt(100); 
    if (number > percent){ 
     return false; 
    } 
    return true; 
    } 
    public static int average (int nums[]) { 
    int total = 0; 
    for (int i=0; i<nums.length; i++) { 
     total = total + nums[i]; 
    } 
    int average = total*10/nums.length; 
    return average; 
    } 
    public static int sum(int nums[]) { 
    int sum = 0; 
    for (int i=0; i<nums.length; ++i) { 
     sum += nums[i]; 
    } 
    return (int)sum; 
    } 
    public static int max(int nums[]) { 
    int max = nums[0]; 
    for (int i=1; i<nums.length; i++) { 
     if (nums[i] > max) 
      max = nums[i]; 
    } 
    return max; 
    } 
    public static int min(int nums[]) { 
    int min = nums[0]; 
    for (int i=1; i<nums.length; i++) { 
     if (nums[i] < min) 
      min = nums[i]; 
    } 
    return min; 
    } 

} 
+0

shotsMade [0] = shotCount; – nattyddubbs

+0

0 대신 변수를 사용하려면 shotsMade [0] = shotCount;를 변경하십시오. – azurefrog

+0

그건 분명치가 아닙니다. 어쩌면'shotsMade [myGameCounter - 1] = shotCount; '일까요? –

답변

0

두 가지 데이터를 계산 그래서 그 두 항목을 증가하기 위해 무엇을 변경할 수 있습니다 : 당신이 그렇지 않으면 shotsMade[]

을 설정하는 곳 바로 아래

  1. 이동 myGameCounter++;, 당신 첫 번째 게임이 끝나기 전에 게임 카운터를 2로 늘립니다. 그렇지 않으면, 당신은 다시 사용하는 shotsMade[0]

이 방법의 값을 덮어 쓰는 shotsMade[0]= shotCount;

대신 shotsMade[myGameCounter-1]= shotCount;

shotsMade[myGameCounter-1]= shotCount; myGameCounter++; } while (myGameCounter <=5);

  • 을 설정처럼 이 보일 것입니다 카운터를 배열의 인덱스로 사용하십시오. myGameCounter은 각 게임 (포인트 1을 변경 한 후)마다 1 씩 증가하므로 myGameCounter - 1을 사용하면 shotsMade의 올바른 인덱스가 산출됩니다.

  • +0

    끝내 주셔서 감사합니다. didnt는 그것이 가치를 저장할 수 있기 전에 그것이 게임 수를 바꾸고 있었다는 것을 깨닫습니다. – planker1010

    관련 문제