2017-11-24 1 views
0

명령 줄에 5 개 이상의 변수를 입력하고 배열을 만드는 중입니다. 나는이 값들을 더하고 있지만, 왜 작동하지 않는지는 모르겠다.Java : 명령 줄 입력의 합이 배열의 길이를 나타냅니다. * 대답

내 코드는 다음과 같습니다

public static void main(String args[]) { 
    int t = args.length; 
    int[] u; 
    u = new int[t]; 
    int v = 0; 
    for (int i=0; i<t; i++) { 
     u[i]= Integer.parseInt(args[i]); 
     for (int j=0; j<t; j++) { 
      v = v + u[i]; 
      System.out.println(v); 
     } 
    } 
} 

그러나 만약 입력 5 사람이 내가 잘못 갈 어떤 도움을 크게 감상 할 수 어디 잘 모르겠어요 (25)

를 출력합니다.

참고 : 내 작업에는 라이브러리 기능을 사용하지 않아야합니다.

+3

는 (비록 루프 내부의 코드를 유지), 당신은 단지 그에서 문제 – musefan

+0

를 해결해야 하나 개 루프를 필요로 루프에 대한 당신의 내면 제거하십시오 귀하의 코드, 내부 루프는 외부 루프와 동일한 반복 횟수를 수행합니다. 5 회 1 초가 5 회 반복되는 외부 루프 반복의 내부 루프에서 5 회 추가됩니다. 그것 5 * 5 = 25 – AguThadeus

답변

0

1) 문제가되는 다른 for 루프 안에 for 루프가 있습니다.

2) 변수 이름 지정에주의하십시오 -> 목적을 표현하거나 설명하는 변수 이름을 사용하십시오. 변수 이름 t은 너무 설명 적이 지 않습니다.

3) 추가 변수/배열을 만들 필요가 없습니다. 입력을 반복하여 합계에 추가하십시오.

public static void main(String args[]) { 
    System.out.println(Arrays.stream(myarray).mapToInt(Integer::parseInt).sum()); 
} 
  • 은 문자열의 스트림 (Arrays.stream(args))
  • 에 이러한 변환을 만듭니다

    public static void main(String args[]) { 
        int sum = 0; 
        for (int i=0; i<args.length; i++) { 
        sum += Integer.parseInt(args[i]); 
        } 
        System.out.println(sum); 
    } 
    

    4) 덕분에 자바 8 당신은) 하나의 라이너를 A (비트 복잡한 작업을 수행 할 수 있습니다 IntStream (mapToInt(Integer::parseInt))

  • 을 통해 IntegerStream의 합계 가져 오기
0

내부 루프는 의미가 없으며 문제의 원인으로 보입니다. 실제로 t * t 루프를 수행하고 있는데,이 경우 5 * 5인데 모든 1의 입력을 기준으로 결과가 25 인 이유입니다.

는 당신은 다음과 같이 입력 배열을 통해 루프에 하나의 시간이 필요합니다 :

public static void main(String args[]) { 
    int t = args.length; 
    int[] u; 
    u = new int[t]; 
    int v = 0; 

    for (int i=0; i<t; i++) { 
     u[i]= Integer.parseInt(args[i]); 
     v = v + u[i]; 
    } 

    System.out.println(v); 
} 
보조 노트에

실제로 사용 계획하지 않는 int 배열을 저장 할 이유가 없다 나중에 다른 것을 위해. 이 특정 요구 사항을 바탕으로, 더 나은과 같이 기록 될 것입니다 :

public static void main(String args[]) { 
    int length = args.length; 
    int total = 0; 

    for (int i = 0; i < length; i++) { 
     int number = Integer.parseInt(args[i]); 
     total += number; 
    } 

    System.out.println(total); 
}