根据类的属性选择一个类

时间:2011-11-21 21:08:17

标签: java

我想在java中编写一个方法,根据输入选择某些单词。 例如,如果选择是狗,猫,蜥蜴,鹰 并且有人在翅膀中输入,它会检查选择是否具有该属性。

我不知道这有多复杂,但到目前为止我们已经学会了循环,返回,if,else和扫描程序。

3 个答案:

答案 0 :(得分:1)

您可以维护每个对象的属性列表,然后检查用户键入的属性是否是您手头所有对象类型的列表的一部分。

我建议您查看ArrayList JavaDoc,您需要使用它来维护属性列表。如果您对使用ArrayList对象保留属性感到不安,则可能需要使用String数组,这也可以正常工作。您还需要定义一个类层次结构并定义一个可在所有子类中使用的方法(这里是继承的tutorial)。

修改

我在阅读评论之前发布了第一个答案。

如果您的唯一任务是提供冻结在用户指定温度下的组件列表,则不需要属性列表。您可以定义一个定义抽象方法Element的超类(比如public int getFreezingTemperature ())。然后,在所有子类中,您将必须实现此方法。例如,如果您创建一个类Water

public class Water extends Element {
    @Override
    public int getFreezingTemperature () {
        return 0;
    }
}

并为您必须创建的每个元素重复相同的操作。完成后,无论何时用户输入温度,您都可以通过方法getFreezingTemperature ()查询元素,并且只要返回的温度高于用户指定的温度,就将其添加到冻结在指定温度的元素列表中温度。

答案 1 :(得分:0)

编辑:看完你的评论后,看起来你会想做这样的事情。

//create your scanner, using whatever resource you are told to use
int temp=scanner.readInt()

//read in the given temperatures
if(substance1freezingpoint > temp){
    System.out.println("substances 1 will freeze at " + temp);
}
if(substance2freezingpoint > temp){
    System.out.println("substance 2 will freeze at " + temp);
}
....

有关该实施的一些注意事项。

  1. 假设一种以上的物质在温度下会冻结。如果不是这样,你会想要使用else ifs。作为测试你的学习的问题:为什么会这样?
  2. 它不存储哪种物质会在一定温度下冻结,只是将它们打印到屏幕上。如何修改它以存储符合标准的物质
  3. 它不涉及沸点,但它是一个非常容易的修改,使它做到这一点。
  4. 那么,这段代码至少会让你失败,或者它不能满足问题的要求吗?

答案 2 :(得分:0)

我正在尝试回答您在评论中提到的物质温度问题。你可以这样制作一个数组:

String[] substances = new String[number of substances given];

然后将物质按照分配中给出的顺序放入阵列中。然后,您可以检查用户的输入,并确定与其输入相对应的物质名称在哪个索引处。例如:

//code to initialize array of substances goes here, call it "substArray"
//code to make scanner goes here, call it "scan"
int temp = scan.nextInt();
if(temp == -100)
{
System.out.println(substArray[index of substance corresponding with -100]);
}
else if...
...

这似乎是一个非常混乱且不是非常优雅的程序,可以在不使用单独的类的情况下编写,但希望这是在您当前的知识和理解范围内。  我希望这有帮助,        泰勒