Java 添加到函数数组中的元素在类中不可用,将丢失其值
我的程序应该模拟购物车。函数之一,它从文本文档中读取项目数据,并将价格、项目id和项目名称等数据存储在数组中。一旦我尝试从下面的“myClass”类访问数组内容,似乎添加到函数中的数组内容消失了。我想知道是否有人能帮我找出在myClass中使用idArray的正确方法,它在函数中添加了元素,如下所示 注意:我在数组的区域中添加了注释,该区域没有按预期打印出来,如下所示 我感谢你事先的帮助Java 添加到函数数组中的元素在类中不可用,将丢失其值,java,Java,我的程序应该模拟购物车。函数之一,它从文本文档中读取项目数据,并将价格、项目id和项目名称等数据存储在数组中。一旦我尝试从下面的“myClass”类访问数组内容,似乎添加到函数中的数组内容消失了。我想知道是否有人能帮我找出在myClass中使用idArray的正确方法,它在函数中添加了元素,如下所示 注意:我在数组的区域中添加了注释,该区域没有按预期打印出来,如下所示 我感谢你事先的帮助 public class MyClass extends JFrame{
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(),我犯了一个愚蠢的错误,我一直在努力解决这个问题,谢谢你指出这一点,我感谢你的帮助:)谢谢你的回复,这正是我的问题,愚蠢的错误。我把这个问题复杂化了,并且已经试着解决了好一阵子了。感谢您的帮助,谢谢:)