2014-10-22 72 views
1

我正在处理一个项目,该项目涉及从文本文件读取数据并将其作为新类存储。为了让这一切轻松完成,我想它最好使用while循环类似如下:使用循环添加到类

while (text.hasNextLine()) { 
 
    System.out.print("Please enter class name: "); 
 
    tempName = kb.next(); 
 
    //sort text into parts for the class 
 
    Class (tempName?) = new Class(); 
 
}

KB是扫描仪,tempName是一个字符串变量。

会这样的代码?我想我不能只是去“Class name = new Class”,因为每次循环运行时,它都会覆盖之前的数据,因为我需要存储所有数据。如果我可以将它放到“Class name(x)= new Class”中,那么会更好一些,其中x是每次循环运行时增加的int变量,但我不确定这是否也可以。

如果它不起作用,一个替代方法来做到这一点将不胜感激。我也不确定如何验证类名,以免数据被意外覆盖。

请注意:我不能使用ArrayList,因为项目的指令禁止“动态数据结构,如arraylist”,所以我可以使用基本的Java代码。

编辑:这是我必须使用的课程之一。

public class Customer_16997761 { 
 

 
    private int customerID; 
 
    private String surname; 
 
    private String firstname; 
 
    private String address; 
 
    private String suburb; 
 
    private int postcode; 
 
    
 
    //Bunch of get methods 
 
    
 
}

文本文件我有一堆与该顺序列出这些变量线。我需要读取该行,将其分解为部分,将其存储为新客户,然后冲洗并重复,直到文件结束。

+0

这将有助于了解您允许使用什么或更多说明?指示码所使用的措辞是什么? – CreationEdge 2014-10-22 02:01:49

+0

我不认为你是按照预期使用Class的。类描述一个对象。您似乎试图将对象的实例定义为类。试着告诉我们你想要做什么,而不使用任何Java术语/关键字,或告诉我们你被要求做什么? – CharlieS 2014-10-22 02:25:15

+0

我按照预期使用了类,我只是没有提到有问题的类。 – 2014-10-22 02:34:44

回答

0

您的解决方案将无法正常工作,但作为替代方案,您可以在每次迭代中创建一个新的java文件,并在文件中为类定义添加文本。所以你可以命名文件tempname.java,并在文件put public class tempname {}。希望这可以帮助。

0

因为我无法想象任何项目/任务会要求允许最终用户决定变量的名称,所以我会在一个假设下回答这个问题:项目需要您创建的Class()有一个名为“名称”的字段,并让用户操纵它。

public class Foo() { 
    String name; 
    //other stuff 

    //Contstructor makes it easy 

    Foo(String _name) { 
     name = _name; 
    } 
} 

然后在你的代码中你可以这样做: int counter = 0;

while (text.hasNextLine()) { 
    ++counter; 
} 

Foo[] myFoos; 
myFoos = new Foo[counter]; 

开始读一遍:

int i = 0; 
while(text.hasNextLine()) { 
    System.out.print("Please enter class name: "); 
    tempName = kb.next(); 
    //sort text into parts for the class 
    Foo[i] = new Foo(tempName); 
    ++i; 
} 

这样做有它,这取决于你如何想要得到的文件中的行,数量更有效的方式,当你想要做什么这些行的东西,你想用于第二次阅读的方法。但是,这应该让您了解如何编写自定义解决方案。

+0

不够但足够接近,这有助于很多。我不确定你是否可以开始阅读,但知道这有帮助。 – 2014-10-22 02:40:17

+0

如果您只能阅读一次,则可以根据需要多次阅读。但它可能涉及关闭文件并重新打开,或者为第二次读取创建一个新的扫描仪。另外,如果要在类中存储唯一的customerID,则类var名称不应是唯一的。如果一切都存储在数组中,只需在数组中执行for循环,当'if(Customer [i] .getID()== compareID){// do stuff}'时执行这些操作,并且不要忘记'在比赛结束后。 – CreationEdge 2014-10-22 03:08:09