2014-10-01 6 views
0

업데이트 ****코드에서 오류가있는 루프의 경우

내 프로그램을 올바르게 컴파일하고 실행하고 있지만 다른 문제가 발생했습니다. 특정 난수가 생성 될 때마다 계산할 변수를 만들어야합니다. 예를 들어 count0은 정수 0이 생성 된 횟수를 기록합니다. 이것은 내가 가진 것입니다 :

import java.util.Random; 

public class L10{ 
public static void main(String[] args){ 
int total = 100; 

Random randObj = new Random(); 

final int UPPER_BOUND = 10; 


for (int i=0; i < total; i++){ 
int randomInt = randObj.nextInt(UPPER_BOUND); 

System.out.print("\n" + randomInt); 


int count0 = 0; 
if(randomInt==0){ 

System.out.print(randomInt + count0); 
} 
int count1 = 1; 
if(randomInt==1){ 

} 
int count2 = 2; 
int count3 = 3; 
int count4 = 4; 
int count5 = 5; 
int count6 = 6; 
int count7 = 7; 
int count8 = 8; 
int count9 = 9; 
} 



} 
} 

결과에 임의의 숫자 (이 경우 영)가 표시되고 그 옆에 0이 인쇄됩니다. 정확히 얼마나 많은 시간이 0이 생성되었는지 추적하는 코드를 작성하는 방법을 잘 모르겠습니다. 어떤 제안?

+0

'새로운 랜덤 (New Random) '을 사용하는 예를 살펴보고 갖고있는 것과 비교해보십시오. http://docs.oracle.com/javase/7/docs/api/java/util/Random.html –

+0

'임의의 randObj = 새로운 임의();'? – JunM

답변

-1

new Random 이후에 ()이 누락되었습니다.

+0

코드의 간단한 실수에 대한 유용한 수정으로 의견을 말하고 다운 투표했습니다. 좋은 행위는 처벌받지 않습니다. – killQuotes

0

이 시도 :

import java.util.Random; 

public class HelloWorld{ 

    public static void main(String []args){ 
    Random randObj = new Random(); 

    final int UPPER_BOUND = 10; 
    int total = 100; 
    String star = "*"; 

     for (int i=0; i < UPPER_BOUND; i++){ 
      int randomInt = randObj.nextInt(total); 
      System.out.print(randomInt); 
     } 
    } 
} 

수정 사항 :

Random randObj = new Random();

int randomInt = randObj.nextInt(total);

+0

도와 주셔서 감사합니다. 업데이트 된 질문을 확인하십시오. 나는 0-10 사이에 10 개의 무작위 숫자를 생성 할 필요가있다. 0-100이 아닌 무작위 수는 – Himz

+0

이다. 나는 단지 그것을 가지고있다. 내일 더 많은 질문이있을 것이다. @JunM – Himz

+0

@Himz Glad. 나는 자바 코더가 아니다 : D 당신의 루프가 100 개의 숫자를 생성하기 위해 '100'에 이르기까지 필요하다는 것은 분명하다. – JunM

0

내가 당신의 의도가 범위 0-9 100 개 임의의 정수를 생성하는 것입니다 생각하고 계산 각 주파수.

각 개수에 대해 별도의 변수를 사용하는 것은 좋지 않습니다. 더 좋은 아이디어는 색인이 난수 인 크기가 10 인 배열을 사용하는 것입니다.

코드를 수정 :

public static void main(String[] args){ 
    final int TOTAL = 100, UPPER_BOUND = 10; 
    Random randObj = new Random(); 
    int[] count = new int[UPPER_BOUND]; 
    // collect frequencies 
    for (int i=0; i < TOTAL; i++) 
     count[randObj.nextInt(UPPER_BOUND)]++; 
    // report frequencies 
    for (int i=0; i < UPPER_BOUND; i++) 
     System.out.print(i + "'s frequency was " + count[i]; 
} 
+0

정확히 똑같은 일을 할 것이다. – user3437460

0
import java.util.Random; 

public class L10{ 
public static void main(String[] args){ 
int total = 100; 
int[] CountArray = new int[total]; //count numbers  
Random randObj = new Random();  
final int UPPER_BOUND = 10; 

for (int i=0; i < total; i++){ 
int randomInt = randObj.nextInt(UPPER_BOUND); 

System.out.print("\n" + randomInt); 

switch(randomInt){ 
    case(0):{ 
     CountArray[0]++; 
     break; 
    } 
    case(1):{ 
     CountArray[1]++; 
     break; 
    } 
    case(2):{ 
     CountArray[2]++; 
     break; 
    } 
    case(3):{ 
     CountArray[3]++; 
     break; 
    } 
    case(4):{ 
     CountArray[4]++; 
     break; 
    } 
    case(5):{ 
     CountArray[5]++; 
     break; 
    } 
    case(6):{ 
     CountArray[6]++; 
     break; 
    } 
    case(7):{ 
     CountArray[7]++; 
     break; 
    } 
    case(8):{ 
     CountArray[8]++; 
     break; 
    } 
    case(9):{ 
     CountArray[9]++; 
     break; 
    } 
} 
} 
    System.out.println(""); 
for(int j = 0;j<UPPER_BOUND;j++){ 
    System.out.println("number of "+ j+" generated "+CountArray[j]); 
} 
} 
} 

이 내가 생각 해낸 코드입니다. 배열을 사용하여 각 요소를 세고 스위치 케이스를 사용하여 별도로 계산했습니다. 그래서 for 루프의 끝에서. 나는 그들을 인쇄했다. 이렇게하면 요소 수를 구별 할 수 있습니다.

+1

이렇게해도 효과가있을지라도 꽤 나쁠 수 있습니다. OP가 1 백만 개의 난수를 생성하려면 어떻게해야합니까? 1 백만 개의 switch 구문을 작성 하시겠습니까? – user3437460

+0

이 경우에 해당됩니다. 그러나 문제는 같은 것을하는 것처럼 보입니다. –

+0

꽤 하드 코딩 된 것으로 보이며 요구 사항이 ** 사소한 ** 변경되면 코드에 ** 주요 ** 변경 사항이 적용됩니다. – user3437460

관련 문제