아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
길쭉한하늘소203
길쭉한하늘소20320.09.20

java 자바 for문 중 배열length관련 질문

for(int i=0; i<5; i++) {

int sum += intArray[i].length;

if(i==4) {

System.out.print(sum + "개의 정수를 입력하시오>>");

}

}

위와같은 for문을 작성중인데 두번째줄 sum선언에서 오류가 생깁니다.

int intArray[][] = new int[5][];

intArray[0] = new int[4];

intArray[1] = new int[1];

intArray[2] = new int[2];

intArray[3] = new int[3];

intArray배열은 위처럼 비정방형 배열로 선언해놓은 상태입니다.

scanner를 사용해 각 배열의 값을 입력받으려고 하는데요

"'총 배열의 개수'를 입력하시오 "라고 출력을 하고싶습니다

총 배열의 개수를 구하는 방법으로 저는 위와같이 for문을 사용해서 구하고 싶었습니다.

제가 묻고싶은 곳은 int sum += intArray[i].length; 부분의 '+='부분에서 Syntax Error가 발생한다는겁니다

다른 곳에서는 잘만 되던 +=가 저 for문에서만 에러가 발생합니다

int sum = sum + intArray[i].length; 로 바꾸어도 두번째sum에서 초기화가 되지 않았다고 오류가발생합니다.

원인이 무엇일까요? 도와주세요 ㅠㅠ

55글자 더 채워주세요.
답변의 개수8개의 답변이 있어요!
  • sum을 for 문 밖에서 선언을 해주고 해야 될 것 같은데요??

    아래처럼...

    안되면 말씀해주세요. 해보진 않아서..

    int sum =0;

    for(int i=0; i<5; i++) {

    sum += intArray[i].length;

    if(i==4) {

    System.out.print(sum + "개의 정수를 입력하시오>>");

    }

    }



  • 안녕하세요.

    for 문 안에

    int sum += intArray[i].length;

    이 부분을

    sum += intArray[i].length;

    이렇게 써 주시고

    sum은 for문 위에서 선언을 해주셔야 될것 같습니다.

    for 문 돌면서 sum이 계속 재선언 되면서 문제가 발생하는 듯 하네요.


  • 질문하신 내용중에도 있지만 Syntax Error (문법적 오류) 입니다.

    int sum = 0; for (int i = 0; i < 5; i++) { sum += intArray[i].length; if (i == 4) { System.out.print(sum + "개의 정수를 입력하시오>>"); } }

    for -loop 블럭 밖에서 sum을 초기화 해주고 난 뒤 += 연산을 해야합니다.

    for -loop 블럭 안에서 초기화 후 += 연산을 하도록 코딩해도 Syntax Error 가 나진않지만

    loop 될때마다 초기화 되기 때문에 의미 없는 코드가 되겠죠.

    최종적으로 Scanner를 이용해서 값을 입력받는 샘플 소스 입니다.

    public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[][] intArray = new int[5][]; intArray[0] = new int[4]; intArray[1] = new int[1]; intArray[2] = new int[2]; intArray[3] = new int[3]; int sum = 0; for (int i = 0; i < intArray.length; i++) { if (intArray[i] != null) { sum += intArray[i].length; } } System.out.print(sum + "개의 정수를 입력하세요.(ex.1,2,3)>>"); String inputString = scanner.nextLine(); System.out.println(inputString); }


  • 안녕하세요.

    아래와 같이 해보세요.

    public class Main { public static void main(String[] args) { int intArray[][] = new int[5][]; intArray[0] = new int[4]; intArray[1] = new int[1]; intArray[2] = new int[2]; intArray[3] = new int[3]; intArray[4] = new int[5]; int sum = 0; for(int i=0; i<5; i++) { sum += intArray[i].length; if(i==4) { System.out.print(sum + "개의 정수를 입력하시오>>"); } } } }

    그리고 배열 초기화할때 5번째를 초기화 안하면 null pointer error가 나서 intArray[4]를 추가했고,

    length를 선언문이 아니라 일반적인 수식으로 변경하였습니다.

    sum += intArray[i].length;

    이렇게요,

    감사합니다.


  • += 연산자는 선언과 동시에 값을 할당하려 하지 마시고

    다음의 형태로 for 문 바깥에서 초기화 해주시고 값을 연산 하시기 바랍니다 :)

    이렇게 해주시면 Syntax Error는 해결될 것으로 보입니다.

    int sum = 0; for (int i = 0; i < 5; i++) { sum += intArray[i].length; }


  • 코드 여러 곳에서 오류가 있어 보입니다.

    우선 sum이라는 변수는 for문이 끝나면 아래에서 접근 할 수 가 없습니다.

    int sum = sum + intArray[i].length 코드는 sum이라는 변수가 선언이 되지도 않았기 때문에 오류가 나는 것입니다.

    sum에 값을 넣기 위해서는 sum라는 것과 intArray[i].length 값을 더해야합니다.

    즉 sum + intArray[i].length 코드가 먼저 실행이 되는데 sum은 어디에도 선언이 되어 있지 않습니다.

    연산이 끝난후에 sum이라는 변수가 선언 되기 때문에 연산을 하는 시점에는 sum이 선언이 되어 있지 않습니다.

    int intArray[][] = new int[5][]; intArray[0] = new int[4]; intArray[1] = new int[1]; intArray[2] = new int[2]; intArray[3] = new int[3]; intArray[4] = new int[3]; int sum = 0; for(int i=0; i<5; i++) { sum += intArray[i].length; if(i==4) { System.out.print(sum + "개의 정수를 입력하시오>>"); } }


  • 아래와 같은 코드가 될텐데요, int sum에 대한 초기화를 해주어야 더한다고 해도 더해지겠죠.

    어디다 더해줄 것인지, 더할 게 없는 데 더하라고 하니까 구문 오류가 난 것입니다.

    int intArray[][] = new int[5][];

    intArray[0] = new int[4];

    intArray[1] = new int[1];

    intArray[2] = new int[2];

    intArray[3] = new int[3];

    int sum =0; // sum에 대한 초기화는 안되어있었음.

    for(int i=0; i<5; i++) {

    sum += intArray[i].length;

    if(i==4) {

    System.out.print(sum + "개의 정수를 입력하시오>>");

    }

    }

    배열로 선언해서 캐스팅된 것과 정수로 선언한게 미스매치되니 연산이 안되는 것입니다.

    하지만 이대로라고 해도 null pointer exception에 빠지게 될겁니다. 선언된 배열의 인덱스가 5이니 4개만 강제 할당해주고 하나가 null입니다.


  • int 2차원 배열에서 각각 다른 길이를 가질 수 없습니다.

    int 배열이 아니라 Arraylist로 int배열을 형식자로 하신다음에 arraylist 의 get함수로 배열을 읽고 그다음에 length함수로 길이 구하시면 원하는 대로 작동할듯 합니다. 한번 해보시고 오류가 난다면 오류와 코드 올려주세요