java:从扫描仪输入中获取对象名称

时间:2014-04-19 14:23:40

标签: java oop object

我通过互联网上的书籍和视频教自己Java。 我知道波纹管代码是错误的,但我如何从这样的变量中读取对象名称?

 public static void main(String[] args) {

   Scanner input =new Scanner (System.in);

   String ObjectName=input.next();

   className ObjectName=new className ();

ᴋᴇʏsᴇʀ,Pshemo,Brian Vanover我编辑了我的问题

我有一个名为BankAccount的类和另一个带有此代码的主类

 public static void main(String[] args) {

   Scanner input =new Scanner (System.in);

  System.out.println("Please Enter ID"); 
  int id=input.nextInt();
  System.out.println("Please Enter Name"); 
  String name = input.next();
  System.out.println("Please Enter Balance"); 
  double balance = input.nextDouble();

String client=input.next();
BankAccount client = new BankAccount (id,name,balance);// i know this code line is worng 

 client.printStatement();

3 个答案:

答案 0 :(得分:3)

如果您询问如何仅根据类名创建类的实例,那么您可以尝试使用

Scanner input =new Scanner (System.in);
String className = input.nextLine();
Class<?> clazz = Class.forName(className);
Object o = clazz.newInstance();

现在,如果你传递full.package.name.of.YourClass并且如果这个类具有可访问的无参数构造函数,那么你应该能够通过newInstance方法创建它的实例。


编辑。

您似乎希望将对象存储在用户提供的某个名称上。您无法明确地将其作为变量名称执行,但您可以使用String界面从yourObjectMap制作一些地图。您的代码可能看起来像

Scanner input = new Scanner(System.in);

System.out.println("Please Enter ID");
int id = input.nextInt();
System.out.println("Please Enter Name");
String name = input.next();
System.out.println("Please Enter Balance");
double balance = input.nextDouble();

String client = input.next();
BankAccount clientAccount = new BankAccount(id, name, balance);

client.printStatement();

Map<String,BankAccount> map = new HashMap<>();
map.put(client, clientAccount);

稍后您可以使用map.get获取客户帐户并获取帐户详细信息,例如

map.get(client).getID();//assuming that you have getter for ID

答案 1 :(得分:0)

这可以通过使用enumif-logic来处理。如果您期望有限数量的可能输入,那么逻辑就可以了:

public static void main(String[] args) {
  Scanner input =new Scanner (System.in);
  String objectName = input.next();

  if (ObjectName.equals("obj1")) {
    Obj1 myObject = new Obj1();
  } else {
    Obj2 myObject = new Obj2();
  }

答案 2 :(得分:0)

第一个文件名Out.java&amp;第二个文件名in.java //第一个文件的代码从这里开始

public class Out {

public static void main(String[] args) {


    in inObject =new in();
    inObject.ikl();

}



}

//second file's code start here
 import java.util.Scanner;

          public class in {

        public static int ikl() {

    Scanner input=new Scanner(System.in);

    int j=input.nextInt();
    System.out.println(j);

    return j;
}

   }