-1
オブジェクトの配列があり、オブジェクトの値を変更して、オブジェクトインファイルが格納されている記憶域ファイルを再更新しようとしています。ストレージファイルを変更しようとすると、ファイルを消去するか、何もしません。ここに私のコードは、レゴTM基板上ブロック互いに近接各としてファイルに..配列内の変数を変更した後、オブジェクトの配列を取得してオブジェクトデータファイルを更新するにはどうすればよいですか?
public class InventoryManager implements Serializable{
String name;
String code;
double price;
int inventory;
String expireDate;
boolean frozen;
String type;
int shoeSize;
double screenSize;
boolean medical;
Object myObject;
Controller l;
FileOutputStream storage = new FileOutputStream("Storage.dat");
ObjectOutputStream out = new ObjectOutputStream(storage);
Pharmacy ph;
TVS tv;
Shoes shoe;
Fruit fruit;
Scanner input = new Scanner(new File("inp.dat"));
public InventoryManager(Object x) throws IOException{
myObject = x;
if(x instanceof Item){
name = ((Item) x).getName();
code = ((Item) x).getCode();
price = ((Item) x).getPrice();
inventory = ((Item) x).getInventory();
}
out.writeObject(x);
out.close();
}
public class Controller implements ActionListener {
GUI myGui;
InventoryManager[] myManager;
JButton myButton;
int quantity;
String nameofproduct = "";
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource() instanceof JButton){
myButton = (JButton) arg0.getSource();
String x = myButton.getText();
for(int i = 0; i<myManager.length; i++){
if(x.equals(myManager[i].name)){
nameofproduct = myManager[i].name;
}
}
if(x.equals("Purchase")){
try{
quantity = Integer.parseInt(myGui.qtnInput.getText());
if(nameofproduct == ""){
JOptionPane.showMessageDialog(null, "Select a Product");
}
else{
for(int i = 0; i<myManager.length; i++){
if(nameofproduct.equals(myManager[i].name)){
myManager[i].inventory = myManager[i].inventory - quantity;
myGui.qtnLeft.setText("Quantity: "+myManager[i].inventory);
myGui.CartInv.setText(myGui.CartInv.getText() + myManager[i].name + " " + quantity+"\n");
myGui.description.setText(myManager[i].toString());
}
}
}
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, "That is not a number");
myGui.qtnInput.setText("");
}
}
for(int i = 0; i<myManager.length; i++){
if(x.equals(myManager[i].name)){
myGui.qtnLeft.setText("Quantity: "+myManager[i].inventory);
myGui.description.setText(myManager[i].toString());
}
}
}
}
}
public void getIM(InventoryManager[] myManager){
this.myManager = myManager;
}
}
ようこそスタックオーバーフロー!私は、このコードの95%があなたの質問に関連していないと思います。あなたの問題を示す[**最小**、完全で実証可能な例](http://stackoverflow.com/help/mcve)を作成してください。 –