2014-11-02 2 views
1

나는 Java로 강좌를 읽고 있는데 에세이를 풀어 봤지만 모든 것이 작동하지만 한 가지가 있습니다. 각 간격마다 얼마나 많은 난수가 있는지 알고 싶습니다. 당신은 내가 임의의 숫자를 원하는 곳에 [amount]를 삽입 한 곳에서 아래 코드를 보면서 무슨 뜻인지 알 수 있습니다. 나는 올바른 논리를 얻는 것 같지 않습니다. 누구든지 나를 도울 수 있습니까? 모든 System.out에 부분의배열의 숫자가 499 이하인지 확인하는 방법은 무엇입니까?

public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 

    System.out.print("How many random numbers from 0 to 999? "); 
    int amount = in.nextInt(); 


    int[] numbers = new int[amount]; 
    System.out.print("Here is the random numbers: "); 
    for (int i = 0; i < numbers.length; i++) 
    { 
     numbers[i] = (int) Math.floor(Math.random()*1000); 
     System.out.print(numbers[i] + " "); 
    } 
    System.out.println(""); 


    System.out.print("These [amount] numbers are from 0 to 499: "); 
    for (int i = 0; i < numbers.length; i++) 
    { 
     if (numbers[i] <= 499) 
     { 
      int[] numbersLow = Arrays.copyOf(numbers, numbers.length); 
      System.out.print(numbersLow[i] + " "); 
     }  
    } 
    System.out.println(""); 


    System.out.print("These[amount] numbers are from 500 to 999: "); 
    for (int i = 0; i < numbers.length; i++) 
    { 
     if (numbers[i] >= 500) 
     { 
      int[] numbersHigh = Arrays.copyOf(numbers, numbers.length); 
      System.out.print(numbersHigh[i] + " "); 
     } 
    } 

} 
+0

를 루프,가는 카운터 변수가 당신에 if 문이 성공할 때마다 반복해서 루프 다음에 인쇄하십시오. – c0d3rman

답변

2
public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 

    System.out.print("How many random numbers from 0 to 999? "); 
    int amount = in.nextInt(); 
    int lowerCounter=0; 
    int higherCounter=0; 
    List<Integer> lowerList = new ArrayList<Integer>(); 
    List<Integer> higherList = new ArrayList<Integer>(); 

    int[] numbers = new int[amount]; 
    System.out.print("Here is the random numbers: "); 
    for (int i = 0; i < numbers.length; i++) 
    { 
     numbers[i] = (int) Math.floor(Math.random()*1000); 
     System.out.print(numbers[i] + " "); 
     if (numbers[i] <= 499) { 
      lowerCounter++; 
      lowerList.add(numbers[i]); 
     } 
     else { 
      higherCounter++; 
      higherList.add(numbers[i]); 
     } 
    } 
    System.out.println(""); 


    System.out.print("These ["+lowerCounter+"] numbers are from 0 to 499: "); 
    for (int i:lowerList) 
    { 
     System.out.print(i + " ");  
    } 
    System.out.println(""); 


    System.out.print("These ["+higherCounter+"] numbers are from 500 to 999: "); 
    for (int i:higherList) 
    { 
     System.out.print(i + " ");  
    } 
} 
2

먼저 어떻게 가능 전에 알 수 루프 후에 할 필요가? :)

다음 int [] numbersLow 나에게 이해가되지 않습니다. 그냥 500 아래의 숫자를 계산하려면 다음과 같이 그것을 :

int counterbelow = 0; 
System.out.print("These are the numbers between 0 and 499"); 
for (int i = 0; i < numbers.length; i++) 
{ 
    if (numbers[i] <= 499) 
    { 
     counterbelow++; 
     System.out.print(numbers[i] + " "); 
    }  
} 

System.out.print("These are "+counterbelow+" numbers"); 
+1

닫기,하지만 루프에서 counterbelow를 정의하면 항상 0이됩니다. 루프 앞에 정의하십시오. 또한 문자열의 숫자 목록을 저장하고 첫 번째 println 뒤에 인쇄하십시오. – c0d3rman

+1

'numbersLow [i]'는'numbers [i]'여야합니다. – Tom

+0

sry, 빨리 게시 됨, 힌트를 주셔서 감사합니다. – Michael

1

장소 루프 아래 ouptut를)

int amount = 0; 
int[] numbersLow = new int[numbers.length]; 
for (int i = 0; i < numbers.length; i++) 
{ 
    if (numbers[i] <= 499) 
    { 
     numbersLow[amount] = numbers[i]; 
     amount++; 
    }  
} 
System.out.println("These " + amount + " numbers are from 0 to 499: "); 
for (int n: numbersLow) 
    System.out.print(n + " ") 
관련 문제