2013-03-09 5 views
0

코드에서 오류가 발생하는 이유는 무엇입니까? 두 가지 방법 인 randomGen을 생성하여 임의의 숫자를 생성하고 matrixGen을 사용하여 임의의 숫자로 매트릭스를 만듭니다. 호환되지 않는 유형 오류가 발생합니다. 누군가가 내가 잘못 ... 임 여전히 단계 학습에 .. Heres는 내 코드 일을 할 수 있는지에 올바른 방향으로 날 가리하시기 바랍니다 경우 :자바에서 2 차원 배열로 임의의 숫자를 전달

import java.util.Random; 

public class sparse{ 
    static int matrix [][] = new int[6][6]; 

    public static int randomGen(){ 
     int rA; 
     Random r = new Random(); 
     rA = r.nextInt(100); 
     return rA; 
    } 

    public static int[][] matrixGen(){ 
     for(int i=0; matrix[i].length < i; i++){ 
      for(int j=0; matrix[j].length <j; j++){ 
       matrix[i] = matrix[i].randomGen(); 
       matrix[j] = matrix[j].randomGen(); 
      } 
     } 
     return matrix[i][j]; 
    } 

    public static void main(String args[]){ 
     new sparse(); 
    } 
} 
+0

어떤 오류가 발생합니까? 정확한 * 오류 메시지를 복사하여 붙여 넣으십시오. 또한 코드 형식을 수정하십시오. –

+0

스택 트레이스가 있습니다! 그리고 우리는 더 이상 혼란스러워하지 않았습니다. –

+2

'randomGen()'이 정수 또는 정수 배열에서 호출 될 수 있다고 생각하지 않습니다. –

답변

7

이 randomGen 제거하기를,이 사용

public static int[][] matrixGen(){ 
    Random r = new Random(); 
    for(int i=0; i < matrix.length; i++){ 
     for(int j=0; j < matrix[i].length; j++){ 
      matrix[i][j] = r.nextInt(100); 
     } 
    } 
    return matrix; 
} 

3 (갱신 : 4) 가지 : 당신이 잘못 Random을 사용하고

  1. . 한 번만 만들어야하고 그 중 많은 숫자가 있어야합니다.
  2. int에 randomGen을 호출하려고합니다. 이는 의미가 없습니다. 그것은 의 속성이 아니라 int입니다. matrix[i][j] = randomGen()을 할 수있었습니다.
  3. 당신은 실제로 배열 요소에 액세스하는 무언가를하고 있습니다. 바라기를이 코드는 당신을 위해 그것을 조금 비울 것입니다.
  4. 루프도 이상합니다. 이 스 니펫에서 수정했습니다.
+0

건배 남자! : D : D –

1

이 :

matrix[i] = matrix[i].randomGen(); 
    matrix[j] = matrix[j].randomGen(); 

이 있어야합니다 :

matrix[i][j] = randomGen(); 
+0

실제로'matrix [i] [j] = randomGen()'이어야합니다 : 그의 매트릭스 인덱스도 혼란 스럽습니다. – Dave

+0

내가 마크 업으로 실패한 것처럼 – Javanator

0

귀하의 matrixGen 방법은 혼란이다. 외부 루프 i for 루프는 내부 배열의 길이가 아닌 matrix 배열의 길이에 도달하면 반복을 중지해야합니다. 마찬가지로 j for 루프는 matrix[i] 배열의 길이에 도달하면 반복을 중지해야합니다.

2D 배열의 한 특정 지점에 값을 지정하려면 두 개가 아닌 하나의 지정이 필요합니다. =의 왼쪽에서 을 모두 사용해야합니다.ij을 사용해야합니다.

randomGen을 호출하기 전에 matrix[i] 또는 matrix[j]을 입력 할 필요가 없습니다. 동일한 클래스에서 정의했기 때문입니다.

matrixGen 메서드를 호출하지 않았습니다.

0

먼저 제공되는 코드에서 사용하지 않는 개체를 만들면 main은 아무 것도하지 않습니다. 나는 그것이 앞으로 계속 될 것이라고 생각한다.

오류에 대해서는 추가 정보가 없으므로 가정을해야합니다.

발생하는 오류는 아마도 matrixGen 메쏘드에있을 것입니다.이 메쏘드는 정적 행렬을 채우기로되어 있습니다.그것은 다음과 같이해야합니다 :

public static void matrixGen(){ 
    for(int i=0; i < matrix.length; i++){ 
     for(int j=0; j < matrix[i].length; j++){ 
      matrix[i][j] = randomGen(); 
     } 
    } 
} 
  1. void, 당신이 당신의 매트릭스를 수정하고 새로 생성하지 않는 것처럼;
  2. 루프 상태가 잘못되었습니다. 인덱스는 각 길이에 도달 할 때까지 증가합니다 (행의 경우 i, 열의 경우 j).
  3. 두 행렬 (행 및 열)을 사용하여 행렬에 액세스하십시오.
  4. randomGen은 배열이 아니라 class sparse의 메소드입니다.

편집 : 데이브에 의해 언급 된 바와 같이, 그렇지 또한 새로운 Random 예를 매번 작성해야합니다. 동일한 방법으로 행렬에 입력 한대로 변수에 Random을 저장하거나 루프를 입력하기 전에 작성하십시오.

+1

나는 모든 난수에 대해 새로운 임의의 객체를 생성해서는 안된다는 점도 주목할 가치가 있다고 생각한다. – Dave

관련 문제