2017-05-28 30 views
-1

我有一组数据组的格式化赋值于具有不同值的

elements- 
ag,gold,320.0 
h,hydrogen,gas 

对象我有2类金属和非金属。它们共享相同的符号和名称分类字段,但对于属性具有不同的分类字段

例如,黄金质量为320.0,氢气是气体

我想知道如何将它们分配给适当的类。

这是我迄今为止想到的。

从文件中读取这些值后,将它们放入数组,然后检查[2]处的值是字符串还是double将它分配给非金属如果字符串和金属如果是double,但是因为它是从文件中读取时的字符串itll始终将其分配给非金属类。如果我解析它加倍,我不知道如何相互作用。有可能会出现错误,因为字母不能转换为double,这是对的吗?

我该如何解决这个问题?

+0

您打算如何处理这些基本数据?如果您可以告诉我们,也许有人可以提供如何应对源数据中的每一行可能具有不同类型数据的事实。 –

+0

即时打印出对象如果用户选择打印出非金属元素,则仅打印出氢气仅用于本示例@ TimBiegeleisen – ch1234

+0

最好的办法是更改文本文件,以便每行都包含统一格式的数据,如CSV文件格式,在该行的每个项目中使用相同类型的数据元素,如果该行没有有意义的值,则将该行中的项保留为空。 –

回答

0

解析为double会生效,你只需要使用try-catch块。例如:

try{ 
    double d = Double.parseDouble(valuteAt[2]); 
    // do what you want if it is double, for example 
    Metal m = new Metal(..., d); 
    }catch(NumberFormatException ex){ 
    // do what you want if it isn't double 
    NonMetal m = new NonMetal(..., valueAt[2]); 
    }