2017-01-01 1 views
-3

최대 및 최소 및 간격으로 주어진 double 형 배열을 만들어야합니다. 배열은 {2.9, 4.9, 6.9, ... 등}숫자 범위에서 배열 만들기

과 같은 형태로 나타납니다. 배열이 0으로 바뀝니다.

public class FoolinAround { 
    public static void main(String[] args) { 
     double min = 2.9; 
     double max = 20.6; 
     double gap = 2.0; 
     double count = (max - min)/gap + 2; // as will need first and last 
               // element also 

     double array[] = new double[(int) count]; 
     for (int j = 0; j < array.length; j++) { 
      double i = array[j]; 
      min = min + gap; 

     } 
     for (double k : array) { 
      System.out.print(array[(int) k] + ","); 
     } 

    } 
} 
+4

아니요 당신은'array [j] = something'이 없습니다. 배열 요소에 아무 것도 지정하지 않으면 배열에 아무 것도 채워지지 않을 것이라고 어떻게 예상합니까? –

+3

참고 :'double i = array [j];는 아무 것도 사용하지 않습니다. 그것은 로컬 이중 변수 'i'를 생성하고,이 동일한 로컬 변수에 0을 할당하고 (이는 모든 배열을 유지하므로) 동일한 로컬 변수를 버립니다. –

+0

이 어레이가 완료 될 때 무엇을 유지해야하는지 명확하지 않습니다. 예제를 제공해주십시오. – weston

답변

1

배열에 대한 할당이 누락되었습니다 (array[j] = something;). 귀하의 explantation에서 array 그 결과를 포함하는 것으로 나타납니다 나타납니다. 해결하려는 문제를 이해한다면 해결책이 될 것입니다.

public class FoolinAround { 
    public static void main(String[] args) { 
     double min = 2.9; 
     double max = 20.6; 
     double gap = 2.5; 
     double count = (max - min)/gap + 2; // as will need first and last 
               // element also 

     double array[] = new double[(int) count]; 
     for (int j = 0; j < array.length; j++) { 
      array[j] = min + (j*gap); 
     } 
     for (double k : array) { 
      System.out.print(array[(int) k] + ","); 
     } 

    } 
} 

내가이 계산은 해당 어레이의 당신에게 올바른 크기를 줄 것이다 있는지 확인하지 않았다 double count = (max - min)/gap + 2;. 이 계산을 확인하는 것이 좋습니다. 반올림보다는 잘림에 의존하기 때문에 하나씩 오류가 발생할 수 있습니다. 여기

+0

감사합니다. 미안 해요. 코딩에 새로운 브랜드입니다. 그걸 발견 했어야 했어. 게시물 크리스마스 정신 블록을 가지고. 고맙습니다! – Harry

1

내가 발견

double[] array = DoubleStream.iterate(min, prev -> prev + gap) 
          .limit(count) 
          .toArray(); 

Link to DoubleStream

+0

@mangotang 좋은 장소. 고맙습니다. – Dummy

+0

더미, 패키지 또는 라이브러리를 사용할 수 없으며 기본 자바를 사용해야하므로 프로젝트에 대한 감사하지만 정말 감사드립니다. – Harry

+2

정보 주셔서 감사합니다. Btw, 질문을 할 때, 도움을 요청한 사람들이 당신에게 더 나은 대답을 줄 수 있도록 귀하의 요구 사항을 나열하는 것을 잊지 마십시오 – Dummy

0

문제는 할당과를위한 각 루프 얼마나입니다. 당신이 그것을 할 수있는 방법은 다음과 같습니다 :

double min = 2.9; 
    double max = 20.6; 
    double gap = 2.0; 
    double count = (max - min)/gap + 2.0; 

    System.out.println(count); 
    double array[] = new double[(int) count]; 
    for (int j = 0; j < array.length; j++) { 

     // double i = array[j]; /*Not sure why this assignment is used 
     // here?*/ 
     array[j] = min; 
     min += gap; 

    } 

    for (double k : array) { 
     System.out.print(k + "\n"); // Here k is the double value from the 
            // array. array[(int)k] will give you 
            // element of array indexed at the 
            // element of array. 
    } 
+0

정말 고마워요, 이것은 매우 도움이되었습니다! – Harry

관련 문제