Java 添加到函数数组中的元素在类中不可用,将丢失其值

Java 添加到函数数组中的元素在类中不可用,将丢失其值,java,Java,我的程序应该模拟购物车。函数之一,它从文本文档中读取项目数据,并将价格、项目id和项目名称等数据存储在数组中。一旦我尝试从下面的“myClass”类访问数组内容,似乎添加到函数中的数组内容消失了。我想知道是否有人能帮我找出在myClass中使用idArray的正确方法,它在函数中添加了元素,如下所示 注意:我在数组的区域中添加了注释,该区域没有按预期打印出来,如下所示 我感谢你事先的帮助 public class MyClass extends JFrame{

我的程序应该模拟购物车。函数之一,它从文本文档中读取项目数据,并将价格、项目id和项目名称等数据存储在数组中。一旦我尝试从下面的“myClass”类访问数组内容,似乎添加到函数中的数组内容消失了。我想知道是否有人能帮我找出在myClass中使用idArray的正确方法,它在函数中添加了元素,如下所示

注意:我在数组的区域中添加了注释,该区域没有按预期打印出来,如下所示

我感谢你事先的帮助

    public class MyClass extends JFrame{

            public String[] idArray = new String[10];
            public String[] recordArray = new String[10];
            public String[] priceArray = new String[10];

            public void openFile(){
                try{
                    x = new Scanner(new File("inventory.txt"));
                    x.useDelimiter(",|" + System.getProperty("line.separator")); 
                }
                catch(Exception e){
                    System.out.println("Could not find file");
                }
            }
            public void readFile(){
                int i=0;
                while(x.hasNext()){
                    idArray[i] = x.next();
                    recordArray[i] = x.next();
                    priceArray[i] = x.next();
                    i++;
                }
            }
            public MyClass(){


                /** Code to create GUI Here    **/


                //Process Item
                button1.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent e){
                      String y = item1.getText();
                      int numItems = Integer.parseInt(y);
                      MyClass obj = new MyClass();
                      obj.openFile();

                      //**ARRAY PRINTS OUT NULL AND DOES NOT PRINT OUT THE VALUES AQUIRED IN THE FUNCTION ABOVE**//
                      for(int i=0; i < numItems; i++){
                          for(int g=0; g < idArray.length; g++){
                                System.out.println(obj.idArray[g]);   
                          }
                       }
                   }
                });
         }      
    }
公共类MyClass扩展JFrame{
公共字符串[]idArray=新字符串[10];
公共字符串[]记录数组=新字符串[10];
公共字符串[]priceArray=新字符串[10];
公共void openFile(){
试一试{
x=新扫描仪(新文件(“inventory.txt”);
x、 useDelimiter(“,|”+System.getProperty(“line.separator”);
}
捕获(例外e){
System.out.println(“找不到文件”);
}
}
公共void readFile(){
int i=0;
while(x.hasNext()){
i阵列[i]=x.next();
recordArray[i]=x.next();
priceArray[i]=x.next();
i++;
}
}
公共MyClass(){
/**在这里创建GUI的代码**/
//过程项
button1.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
字符串y=item1.getText();
int numItems=Integer.parseInt(y);
MyClass obj=新的MyClass();
openFile();
//**数组打印空值,不打印在上述函数中获得的值**//
对于(int i=0;i
这是因为您从未实际调用
readFile
,因此从未设置值。我假设您打算从
openFile

调用
readFile
,除非我遗漏了一些内容,看起来您正在打开文件,但忘记了读取文件……因此为空。试试这个:

   obj.openFile();
   obj.readFile();

在哪里调用
readFile()
x
在哪里定义?您应该在
readFile()
中添加一些调试语句,以确保它正在执行,并跟踪它正在执行的操作。感谢您的回复。我删除了很多代码,使其在网站上更具可读性,我定义了所有变量,包括x。。。问题是我从来没有叫过readFile(),我犯了一个愚蠢的错误,我一直在努力解决这个问题,谢谢你指出这一点,我感谢你的帮助:)谢谢你的回复,这正是我的问题,愚蠢的错误。我把这个问题复杂化了,并且已经试着解决了好一阵子了。感谢您的帮助,谢谢:)