2017-05-15 1 views
0

제발, 아직 Java를 배우고 있지만 일부 반복 기술에 익숙하지 않았습니다. 이 배열 int [] lst = {34, 23, 7, 14, 10}을 반복하여 배열의 각 요소 사이에 임의의 숫자를 생성해야합니다. 예 : 34와 23, 23과 7, 7과 14, 14와 10 사이의 무작위 값을 나열 할 수 있어야합니다. 어젯밤부터 아침까지 작업 해 왔기 때문에 도움이 필요합니다. 내 끔찍한 코드가 아래에 붙여 넣어집니다.배열의 int 요소의 무작위 정수

public class ArrayRange { 


    public static void main(String[] args) { 

     Random rand = new Random(); 

     int[] lst = {34, 23, 7, 14, 10}; 
     for(int i = 0; i < lst.length; i++){ 
      if (i == 0){ 
       int result = rand.nextInt(lst[i])+1; 
       System.out.println(result); 
      } 
      else { 
       int max = lst.length - 1; 
       System.out.println(rand.nextInt(max - lst[i])+ 1); 
      } 
     } 
    } 
} 
+0

두 가지 주요 사항을 고려 할 수 있습니다. '[i]'와'[i + 1]'을 원한다면, 'lst.length - 1'로 루프하십시오. 난수의 경우 첫 번째 요소에 추가 된 두 요소의 차이 숫자가 필요합니다. – KevinO

+0

각 범위의 값은 몇 개입니까? –

+0

@KevinO 당신이 맞지만 그가 코드에서 어디에도 'lst [i + 1]'을 가지고 있지 않다. – JackVanier

답변

1

이 시도 :

public class ArrayRange { 

    public static void main(String[] args) { 

     Random rand = new Random(); 

     int[] lst = {34, 23, 7, 14, 10}; 
     for(int i = 0; i < lst.length-1; i++){ 
      int val = rand.nextInt(Math.max(lst[i], lst[i+1]) - Math.min(lst[i], lst[i+1])) + Math.min(lst[i], lst[i+1]); 
      System.out.println("(" + lst[i] + ", " + lst[i+1] + "):" + val); 
     } 
    } 
} 
+0

감사하지만 iti가 작동하지 않았습니다. "스레드의 주 예외"오류를 표시합니다. java.lang.Error : 해결되지 않은 컴파일 문제 : \t at SumNum.main (ArrayRange.java:6) – Isan

+0

죄송합니다!, 대단히 감사합니다. 그 이후의 아이디어 – Isan

+0

위의 코드가 잘 작동하고 시스템에서 테스트했습니다. – slal