将用户输入字符串转换为类名

时间:2018-12-03 04:07:16

标签: java

我有一个称为Station的记录,并且创建了该对象的3个实例。它们以不同的站点命名。我希望让用户输入他们想了解更多的站点名称,并向用户显示有关该站点的信息。

但是,当我使用getter方法获取信息时(因为用户输入是一个字符串,并且getter方法要使用station对象才能起作用),在保持可扩展性的同时实现此目的的最佳过程是什么(能够添加更多的电台正在运行中。

我的代码如下:

preg_quote()

很抱歉,这很简单,或者是不好的做法。我只是在学习!

3 个答案:

答案 0 :(得分:1)

如果您只想添加一种类型的电台,即唯一电台,请使用Set
如果不是,则使用List

覆盖Station类中的equals()。用于比较两个电台。

class Station{
  String name;
  String operator;
  Boolean stepFree;

// getters and setters
//Override toString()

@Override
public boolean equals(Object o)  // will compare objects based on name
  {
  return ((Station)o).getName().equals(this.getName);
  }
}  

主类

class Main {
  public static void main(String[] args) {
     List<Station> list= new ArrayList<>();
     list.add(new Station("York", "American Railways",true));
     list.add(new Station("Moscow", "Russian Railways",false));
     list.add(new Station("Paris", "French Railways",true));

    System.out.println("What Station do you need to know about? ");
    String UsrStation = s.nextLine();
    Station station =new Station();
    station.setName(UsrStation);    // Preparing object to compare with List

   for (Station s:list)
   {
      if (station.equals(s))
        System.out.println(s);  //Print your s object
   }

  }

如果您的列表中有唯一的电台,请在“电台”类别中使用“设置并覆盖hashcode()equals()

答案 1 :(得分:0)

设置finalsp1, finalsp2 = [], [] for i in range(ncoll): if diff[i] >= 0: finalen1 = en1[i] - halfen[i] finalen2 = en2[i] + halfen[i] else: finalen1 = en1[i] + halfen[i] finalen2 = en2[i] - halfen[i] finalsp1.append(np.sqrt((2*finalen1)/m)) finalsp2.append(np.sqrt((2*finalen2)/m)) return finalsp1, finalsp2 类的理想方法是让实例类具有getter和setter,而不是Station类。

main

您可以通过在上面的类中添加构造函数来创建新的电台。

class Station{
  String name;
  String operator;
  Boolean stepFree;

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getOperator() {
    return operator;
}
public void setOperator(String operator) {
    this.operator = operator;
}
public Boolean getStepFree() {
    return stepFree;
}
public void setStepFree(Boolean stepFree) {
    this.stepFree = stepFree;
}

}

这样,您可以在public Station(String name, String operator, Boolean stepFree) { super(); this.name = name; this.operator = operator; this.stepFree = stepFree; } 类中创建新对象,如

main

答案 2 :(得分:0)

我认为这是您想要的。我已经实现了一个框架,您可以根据自己的需要来定义它。

        for (int i = 0; i < 3; i++)
        {
            int x = 5;
            // Do something three times with x=5
        }