2014-02-25 2 views
-8

이것은 내 주안점입니다.Java에서 확장 문법 오류가 발생했습니다.

package oleg; 

import java.util.Scanner; 

public class main_class { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     int length,shetach,num; 

     zura[] z1 = new zura[5];  

     for(int i=0;i<z1.length;i++) 
     { 
      System.out.println("Enter 1,2,or 3"); 
      Scanner s1=new Scanner(System.in); 
      num = s1.nextInt(); 
      switch (num) { 
       case 1: 

        z1[i] = new ribua(); 
       System.out.println("Enter length"); 
       length=s1.nextInt(); 
       z1[i].set_info(); 
       z1[i].shetach(length); 
       System.out.println(shetach); ////// here is the error 

       break; 

       default: 
       System.out.println("error 3"); 
        break; 
      } 
     } 
    } 

이것은 내가 처음으로 상속 한 클래스입니다.

package oleg; 

public class zura { 

    public int shetach(int shetach) 
    { 
     return shetach; 
    } 

    public void heikef() 
    { 

    } 

    public void set_info() 
    { 

    } 
} 

이것은 zura 클래스를 extands 내 두 번째 클래스입니다

package oleg; 

public class ribua extends zura { 

    int length; 

    public int shetach(int shetach) 
    { 
     shetach=length*length; 
     return shetach; 
    } 

    public void set_info(int length) 
    { 
     this.length=length; 
    } 

내 문제가 System.out.println(shetach); 가 어떻게이 shetach를 인쇄하고 행의 main 클래스에?

+2

코드를 형식화하십시오. –

+1

그리고 완전하고 정확한 오류 메시지를 붙여 넣으십시오. 그것은 문제가 무엇인지, 그리고 어디에 있는지 말합니다. 그것을 우리로부터 숨기는 것은 비생산적입니다. –

+0

나는 그것이 초기화되지 않은 변수 shetach에 의한 것이라고 가정합니다. shetach 함수는 int를 반환하지만 shetach 변수에는 절대로 저장하지 않습니다. 그래서 단지'z1 [i] .shetach (length);를'shetatch = z1 [i] .shetach (length);로 변경하십시오. 그러나 당신이 더 잘 설명하고 혼란을 덜 만든다면 도움이 될 것입니다. –

답변

0

변수를 메서드에 전달하면 이 복사됩니다.입니다. 즉, 메서드에서 해당 변수를 설정하면 호출자에게 아무런 영향을 미치지 않습니다. 즉, 변수의 호출자 사본을 초기화하지 않습니다. 이렇게 보이도록 코드를 변경해야합니다.

shetatch = z1[i].shetach(length); 

변수 내의 변수의 이름은 같습니다. 하지만 공통점은 없습니다.

2

로컬 변수 shetach가 초기화되지 않았다고 말합니다. 모든 로컬 변수를 초기화해야합니다. 그래서 그것이주는 오류입니다.

관련 문제