본문 바로가기
개발일지/Java

Java - java: variable scores is already defined in method main(java.lang.String[])

by 개발에정착하고싶다 2024. 8. 6.
320x100
// 1. 배열의 구조

package org.example;

public class Main {
    public static void main(String[] args) {
        // Array의 구조
        int[] counts = {12,34,56,78};
        System.out.println(counts);

        // 1차원 배열
        int[] firstArray;
        int secondArray[];

        // Array 선언 및 생성
        int[] thirdArray = new int[3];

        // 배열 요소의 합을 구하는 반복문
        int[] scores = new int[]{85,77,90};
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {
            sum += scores[i];
        }
        System.out.println("Score sum : " + sum);
        System.out.println("Score average : " + sum / scores.length);

        // 향상된 for 문 Enhanced for 문
        int[] scores = new int[]{85, 77, 90};
        int sum = 0;
        for (int score : scores) {
            sum += score;
        }
        System.out.println("Score sum : " + sum);
        System.out.println("Score average : " + sum / scores.length);


    }
}

 

자바라는 언어는 구분 되기 보다는, 이미 앞선 변수가 정해져 있으면, 그 외의 추가 설정은 안되는 듯 하다.

파이썬 같은 경우는 밀고밀고 결국 마지막에 있는게 실행되는 구조인데,

자바는 이미 정의된 값을 초기화 시키더라도 실행이 안되는 구조라니, 이를 해결할 방법을 찾아봐야겠다.

 

===

stack over flow 에 같은 내용으로 문의를 한 사람이 있었는데, 변수를 달리 해주는 것으로 해결했다.

이를테면 score, score로 하지말고 score, score2 이런식으로

 

그래서 Enhanced for 문 부분만

// 향상된 for 문 Enhanced for 문
// Element를 변경하는 경우에는 적합하지 않음

int[] scores1 = new int[]{85, 77, 90};
int sum1 = 0;
for (int score1 : scores1) {
    sum1 += score1;
}
System.out.println("Score sum : " + sum1);
System.out.println("Score average : " + sum1 / scores1.length);

이렇게 바꿔줬더니 작동이 잘 되었다.

300x250

'개발일지 > Java' 카테고리의 다른 글

Java - String과 index 처리 의문  (0) 2024.08.05
java: unclosed character literal  (0) 2024.08.01