来自极其简单的高中java学生的极其简单的问题。
我收集了用户输入并创建了一个对象" AccountOne"。我必须将AccountOne传递给类printcode并使用printaccount方法打印" myaccount.name,myaccount.address,myaccount.type,myaccount.balance"。我的老师一直试图解释遗产,她每天都在失去我越来越多。根据我的理解,AccountOne类型的对象myaccount现在应该"有" myaccount.name,myaccount.address,myaccount.type,myaccount.balance"在其内部。因为我将对象传递给方法,所以该方法继承了对象中的任何内容。问题,方法printaccount应该能够找到符号" myaccount,my account.name,myaccount.address,myaccount.type,myaccount.balance"。我已经研究过,一切对我来说都没有意义,这似乎都是关于我尚未开始掌握的更先进的东西。如果有重复的问题,请指出。
编译时,我会得到10个以上的错误"不是声明"或"找不到符号myaccount"。在这一点上,我只是采取零,我超越沮丧。我一直瞥了一眼,这很可能是一件非常简单的事。
我已尝试在main语句之前定义printcode中的变量。 AccountOne中定义的变量。试图研究定义方法的不同方法,并且找不到对我有意义的任何方法。
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 main(String args[])
{
public static printaccount(AccountOne myaccount)
{
System.out.println("My Account = " + myaccount.name + " " + myaccount.address + " " + myaccount.type + " $" + myaccount.balance);
}
}
}
答案 0 :(得分:1)
首先,当我们说 - myaccount.name
时,它意味着myaccount
是MyAccount
类的一个实例,并且它定义了一个成员变量,它是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
。如果两个类都在不同的文件中,则无需考虑这一点。
希望这会有所帮助。我将这两个类复制粘贴到一个文件中。
答案 1 :(得分:0)
你已经在main方法中定义了静态方法printaccount(在printcode类中)。从main方法中删除它并且应该可以工作。
除此之外,还有以下几项更改
您的System.out.println出现错误,其中为串联字符串" +"失踪了。
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);
}
}