2014-10-12 53 views
0

來自一位極其簡單的高中java學生的非常簡單的問題。跨課程傳遞對象

我收集了用戶輸入並創建了一個對象「AccountOne」。我必須將AccountOne傳遞到類printcode並使用printaccount方法來打印「myaccount.name,myaccount.address,myaccount.type,myaccount.balance」。我的老師一直試圖解釋繼承,她每天都越來越多地失去我。根據我的理解,AccountOne類型的對象myaccount現在應該「具有」myaccount.name,myaccount.address,myaccount.type,myaccount.balance「,因爲我將該對象傳遞給方法,該方法繼承了任何Ergo,方法printaccount應該能夠找到符號「myaccount,my account.name,myaccount.address,myaccount.type,myaccount.balance」。我已經研究過,一切對我都沒有意義,這一切如果有重複的問題,請指向我

當編譯時,我得到10+錯誤說「不是一個聲明」或「不能找到符號myaccount「,在這一點上,我只是採取零,我超越了沮喪,這很可能是一些愚蠢的簡單,我不停地看了一眼

我試着在main語句之前在printcode中定義變量。在AccountOne中定義的變量。試圖研究不同的方法來定義一個方法,並找不到任何對我有意義的東西。

import java.util.Scanner; 
 
public class AccountOne 
 
{ 
 
\t public String name; 
 
\t public String address; 
 
\t public String type; 
 
\t public double balance; 
 
\t 
 
    public static void main(String args[]) 
 
    { 
 
\t \t Scanner keyboard = new Scanner(System.in); 
 

 
\t \t System.out.print("Enter Name "); 
 
\t \t String name=keyboard.nextLine(); 
 
\t \t System.out.println(); 
 

 
\t \t System.out.print("Enter Address "); 
 
\t \t String address=keyboard.nextLine(); 
 
\t \t System.out.println(); 
 

 
\t \t System.out.print("Enter type "); 
 
\t \t String type=keyboard.nextLine(); 
 
\t \t System.out.println(); 
 

 
\t \t System.out.print("Enter Balance "); 
 
\t \t double balance=keyboard.nextDouble(); 
 
\t \t System.out.println(); 
 

 
\t \t AccountOne myaccount=new AccountOne(); 
 
\t \t myaccount.name=name; 
 
\t \t myaccount.address=address; 
 
\t \t myaccount.type=type; 
 
\t \t myaccount.balance=balance; 
 

 
\t \t printcode.printaccount(myaccount); 
 
\t } 
 
}

二等 - printcode:

public class printcode 
{ 
    public static void main(String args[]) 
    { 
     public static printaccount(AccountOne myaccount) 
     { 
      System.out.println("My Account = " + myaccount.name + " " + myaccount.address + " " + myaccount.type + " $" + myaccount.balance); 
     } 
    } 

} 
+2

我沒有刪除javascript標籤,因爲這顯然是關於Java ... – home 2014-10-12 13:46:52

+2

'main'方法的哪個類是出發點? – Tirath 2014-10-12 13:49:47

+0

對不起,你的問題困惑。如果以出發點爲出發點,我認爲班級AccountOne就是這個出發點。我將AccountOne傳遞給類printcode中的printaccount方法。我需要打印的所有數據都是打印出用戶收集的變量。 – 2014-10-12 13:57:09

回答

1

首先,當我們說 - myaccount.name這意味着myaccountMyAccount類的一個實例,並將其定義了一個成員變量並且其name

例如 -

class MyAccount { 
    String name; 
    public static void main (String...a) { 
     //here am allowed to say myaccount.name 
     MyAccount myaccount = new MyAccount(); 
    } 
} 

二,聲明

System.out.println("My Account = " + myaccount.name " " + myaccount.address " " + myaccount.type " $" + myaccount.balance); 

都是錯誤的。修改爲

System.out.println("My Account = " + myaccount.name + " " + myaccount.address + " " + myaccount.type + " \\$" + myaccount.balance); 

現在,你應該得到另一個異常,應該告訴你non-static variable address cannot be referenced from a static context。這意味着,如果你想訪問name中是靜態的main背景下 - 你需要的name申報改爲

static String name; 

第三,我們只能有一個public文件類。將public class printcode更改爲class printcode。如果兩個類都在不同的文件中,則不需要考慮這一點。

希望這會有所幫助。我複製粘貼在一個文件中的兩個類。

+0

固定打印語句。所以爲了確保我得到了正確的結果,當我鍵入_AccountOne myaccount = new AccountOne(); _這意味着我有一個名爲myaccount的類,其中包含一個名爲name的變量?正如我的老師解釋的那樣,我認爲我正在創建一個名爲myaccount的「對象」,可以傳遞給一個方法。或者類和對象是一樣的東西? – 2014-10-12 14:57:04

+0

你有一個'AccountOne'類,'myaccount'是該類的一個實例。現在,如果你想訪問'name'成員變量,你可以使用這個'myaccount'實例訪問它,如果它不符合'static'字段的條件。 Incase'name'是'static',您應該使用'ClassName.fieldName'語法在非靜態上下文之外訪問它。 – Tirath 2014-10-12 15:06:18

+0

是的,'AccountOne myaccount = new AccountOne();'表示您正在創建一個名爲'myaccount'的AccountOne類的對象。 – Tirath 2014-10-12 15:11:45

0

您已經從主要方法主要method.Move吧內定義靜態方法printaccount(在printcode類)並應該工作。

除了上面,有幾個更多的變化如下

  1. 你缺少像名稱/地址等領域
  2. (雖然我使用的公共領域,而不是使用get/set方法慣於諮詢)

    您的System.out.println有錯誤,其中對於concatenatign字符串「+」丟失。

    import java.util.Scanner; 
    public class AccountOne 
    { 
    public String name; 
    public String address; 
    public String type; 
    public double balance; 
    public static void main(String args[]) 
    { 
        Scanner keyboard = new Scanner(System.in); 
    
        System.out.print("Enter Name "); 
        String name=keyboard.nextLine(); 
        System.out.println(); 
    
        System.out.print("Enter Address "); 
        String address=keyboard.nextLine(); 
        System.out.println(); 
    
        System.out.print("Enter type "); 
        String type=keyboard.nextLine(); 
        System.out.println(); 
    
        System.out.print("Enter Balance "); 
        double balance=keyboard.nextDouble(); 
        System.out.println(); 
    
        AccountOne myaccount=new AccountOne(); 
        myaccount.name=name; 
        myaccount.address=address; 
        myaccount.type=type; 
        myaccount.balance=balance; 
    
    printcode.printaccount(myaccount); 
    } 
    } 
    
    public class printcode 
    { 
    
        public static void printaccount(AccountOne myaccount) 
        { 
         System.out.println("My Account = " + myaccount.name + " " + myaccount.address + " " + myaccount.type + " $" + myaccount.balance); 
        } 
    
    } 
    
+0

我想只是移動的方法將無濟於事。 – Tirath 2014-10-12 13:53:04

+0

刪除主語句,會發生相同的錯誤。 – 2014-10-12 13:56:04

+0

假設你有兩個不同的java源文件中的類? – SMA 2014-10-12 14:06:53