2014-10-12 56 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