Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件读入JavaFX中的数组,然后写回_Java_Arrays_Javafx_File Read - Fatal编程技术网

将文件读入JavaFX中的数组,然后写回

将文件读入JavaFX中的数组,然后写回,java,arrays,javafx,file-read,Java,Arrays,Javafx,File Read,我正在开发一个小的清单程序,并试图确定如何将数据从文件中获取到某种数组中,以便将数据绑定到某些控件。其思想是用户可以浏览数据并进行更改,然后将更改写回文件中,覆盖当前的内容 这是一个javafx程序。我很好地读入了数据,但到目前为止,我所做的一切都无法使数据在while循环之外被访问。任何指向正确方向的指针都会有帮助。到目前为止,我对ArrayList或一系列对象都不感兴趣,因为在我阅读了所有信息之后,似乎没有任何地方可以放在我可以访问的地方 try ( ObjectIn

我正在开发一个小的清单程序,并试图确定如何将数据从文件中获取到某种数组中,以便将数据绑定到某些控件。其思想是用户可以浏览数据并进行更改,然后将更改写回文件中,覆盖当前的内容

这是一个javafx程序。我很好地读入了数据,但到目前为止,我所做的一切都无法使数据在while循环之外被访问。任何指向正确方向的指针都会有帮助。到目前为止,我对ArrayList或一系列对象都不感兴趣,因为在我阅读了所有信息之后,似乎没有任何地方可以放在我可以访问的地方

try (
            ObjectInputStream read_file = new ObjectInputStream(new FileInputStream("stock.dat")) ;
            ) {
        while (true) {

            String invItemName = read_file.readUTF() ;
            double itemCost = read_file.readDouble() ;
            double itemPrice = read_file.readDouble() ;
            double itemStartInv = read_file.readDouble() ;
            double itemUnitsSold = read_file.readDouble() ;
            double itemProjectedSales = read_file.readDouble() ;
            double profit = ((itemPrice - itemCost) * itemUnitsSold) ;
            //double dblActualvsProjectedSalesPercentage = getSalesPercentage(itemUnitsSold, itemProjectedSales) ;
            double dblDefaultOrder = itemProjectedSales + (itemProjectedSales * .1) ;
            double dblBigOrder = dblDefaultOrder + (dblDefaultOrder * .1) ; 

            InventoryItem o = new InventoryItem(invItemName, itemCost, itemPrice, itemStartInv, itemUnitsSold, itemProjectedSales);

            //For each line in the file, format & display in the primary inventory window
            taCurrentInventory.appendText(String.format( "Item: \t\t\t%8s\nUnit Cost: \t\t\t$%.2f\nUnit Price: \t\t\t$%.2f\nBeginning Inventory: \t%.0f\nUnits Sold: \t\t\t%.0f\nEstimated Sales: \t\t%2.0f\n------------------------------------\n", invItemName, itemCost, itemPrice, 
                   itemStartInv, itemUnitsSold, itemProjectedSales ));

            //Fill in taSalesAndProfit with sales firgures
            taSalesAndProfit.appendText(String.format( "Item: \t%s\nSales: \t%.0f\nProfit: \t$%.2f\n-----------------------------\n", invItemName, itemUnitsSold, profit ) ) ;

            //Format and display our profit data
            if (o.getActualvsProjectedSalesPercent(itemUnitsSold, itemProjectedSales) >= 20 || o.getActualvsProjectedSalesPercent(itemUnitsSold, o.getEstSales()) >= -19) { //Just dispay if actual sales vs projected sales percentage is down less than 20%
                taMarketing.appendText(String.format( "%s \t %4.0f%%\n", invItemName, o.getActualvsProjectedSalesPercent(itemUnitsSold, o.getEstSales()) ) ) ;
            }
            else { //Flag item for a sales promotion to get rid of excess inventory because actual sales vs projected sales are down 20% or more
                taMarketing.appendText(String.format( "%s \t %4.0f%% - Sale!!\n", invItemName, o.getActualvsProjectedSalesPercent(itemUnitsSold, o.getEstSales()) ) ) ;    
            }

            //Format and display our ordering needs
            if (o.getActualvsProjectedSalesPercent(itemUnitsSold, itemProjectedSales) >= 20) { //If sales are 20% or more than projected order 10% more than usual
                taOrdering.appendText(String.format("Item: \t\t%s\nOrder Qty: \t%.0f\n---------------------------\n", invItemName, dblBigOrder)) ;                    
            }
            else { //Otherwise, just order the usual +10% of projected sales
                taOrdering.appendText(String.format("Item: \t\t%s\nOrder Qty: \t%.0f\n---------------------------\n", invItemName, dblDefaultOrder)) ;
            }

        }

    }
    catch (EOFException ex) {

    }
    catch (IOException ex) {
        ex.printStackTrace() ;
    }

你有什么错误吗?还是例外?如果是,请显示堆栈跟踪,没有错误,我只是想弄清楚如何/在哪里放置数据,这样我就可以访问所有的产品信息,这样它就可以更新并保存回文件中。哇,真难看。我想这是一个通过对象序列化创建的文件。最好的做法是每个文件只有一个对象,因此您应该创建一个类来聚合所有数据并序列化其实例,或者应该序列化集合类的实例。如果你这样做,你可以把对象读回并放到引用中,然后从中访问你需要的任何东西。而且,我猜ta*是文本区域吗?这意味着您的数据访问代码与视图UI代码交织在一起。你应该把它们分成不同的类:有一个获取数据并返回对它的引用的数据访问类,你的视图类应该显示检索到的数据。你不会碰巧有一个数据访问类的例子吧?