2014-02-25 51 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() 
    { 

    } 
} 

這是我認爲extands的zura類第二類

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); 

在該方法內的可變shetatch具有相同的名稱。但沒有共同之處。

2

它說局部變量shetach可能沒有被初始化。 你必須初始化你所有的局部變量。這就是爲什麼它給錯誤。