Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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
Java 如何停止通过单独的方法调用丢失数组数据?_Java_Arrays - Fatal编程技术网

Java 如何停止通过单独的方法调用丢失数组数据?

Java 如何停止通过单独的方法调用丢失数组数据?,java,arrays,Java,Arrays,我正在寻找一个数组,可以使用多种方法。我试图通过创建一个全局数组来实现这一点。但我们发现,一旦将数据添加到数组的方法运行并终止,数据就会丢失,所有内容都将再次为空 数组在此处初始化: package book; import book.BookIO; import java.awt.BorderLayout; import java.awt.*; import javax.swing.*; import java.awt.GridBagLayout; import java.awt.GridB

我正在寻找一个数组,可以使用多种方法。我试图通过创建一个全局数组来实现这一点。但我们发现,一旦将数据添加到数组的方法运行并终止,数据就会丢失,所有内容都将再次为空

数组在此处初始化:

package book;

import book.BookIO;
import java.awt.BorderLayout;
import java.awt.*;
import javax.swing.*;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

/**
 *
 * 
 */
public class UserInterface implements ActionListener {
    int j=0;
    int i;

    //Containers 
    String hello;
    JFrame frame = new JFrame("Java Program");
    JPanel toppane = new JPanel(new GridBagLayout());
    JPanel bottomPane = new JPanel(new GridBagLayout());
    //Buttons
    JButton processItem = new JButton("Process Item #1");
    JButton confirmItem = new JButton("Confirm Item #1");
    JButton viewOrder = new JButton("View Order");
    JButton finishOrder = new JButton("Finish Order ");
    JButton newOrder = new JButton("New Order");
    JButton exit = new JButton("Exit");
    //TextFields
    JTextField amount = new JTextField();
    JTextField id = new JTextField();
    JTextField quantity = new JTextField();
    JTextField info = new JTextField("");
    JTextField total = new JTextField();
    //Labels
    JLabel num = new JLabel("Enter Number of Items in this Order:");
    JLabel bookID = new JLabel("Enter Book ID for Item #1:");
    JLabel quantityItem = new JLabel("Enter Quantity for Item #1:");
    JLabel itemInfo = new JLabel("Item #1:");
    JLabel subtotal = new JLabel("Order subtotal for 0 Items(s):");
    public String[] order = new String[i];
    int k = 0;
    public void startUI() {

        UserInterface gui = new UserInterface();
        gui.bookingUI();

    }

    public void bookingUI() {
        //sets windows, and pane in the UI 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GridBagConstraints c = new GridBagConstraints();
        frame.setSize(800, 300);

        //adding the labels to the panel
        c.insets = new Insets(5, 0, 0, 0);
        c.gridx = 2;
        c.gridy = 1;
        toppane.add(num, c);
        c.gridx = 2;
        c.gridy = 2;
        toppane.add(bookID, c);
        c.gridx = 2;
        c.gridy = 3;
        toppane.add(quantityItem, c);
        c.gridx = 2;
        c.gridy = 4;
        toppane.add(itemInfo, c);
        c.gridx = 2;
        c.gridy = 5;
        toppane.add(subtotal, c);
        toppane.setBackground(Color.GREEN);
        frame.add(toppane);

        //add textfield to panel
        c.ipadx = 400;
        c.insets = new Insets(5, 10, 0, 0);
        c.gridx = 3;
        c.gridy = 1;
        toppane.add(amount, c);
        c.gridx = 3;
        c.gridy = 2;
        toppane.add(id, c);
        c.gridx = 3;
        c.gridy = 3;
        toppane.add(quantity, c);
        c.gridx = 3;
        c.gridy = 4;
        toppane.add(info, c);
        c.gridx = 3;
        c.gridy = 5;
        toppane.add(total, c);

        //----------------------------------------------------------BUTTOM PANE-------------------------
        //adding the buttons to the pane.---------------------------------------------------------------
        GridBagConstraints b = new GridBagConstraints();
        b.insets = new Insets(5, 5, 5, 5);
        b.ipadx = 10;
        b.ipady = 10;
        b.gridx = 1;
        b.gridy = 0;
        bottomPane.add(processItem, b);
        processItem.addActionListener(this);
        b.gridx = 2;
        b.gridy = 0;
        bottomPane.add(confirmItem, b);
        confirmItem.setEnabled(false);
        confirmItem.addActionListener(this);
        b.gridx = 3;
        b.gridy = 0;
        bottomPane.add(viewOrder, b);
        viewOrder.setEnabled(true);
        viewOrder.addActionListener(this);
        b.gridx = 4;
        b.gridy = 0;
        bottomPane.add(finishOrder, b);
        finishOrder.setEnabled(true);
        finishOrder.addActionListener(this);
        b.gridx = 5;
        b.gridy = 0;
        bottomPane.add(newOrder, b);
        newOrder.addActionListener(this);
        b.gridx = 6;
        b.gridy = 0;
        bottomPane.add(exit, b);
        exit.addActionListener(this);
        bottomPane.setBackground(Color.BLUE);
        frame.add(bottomPane, BorderLayout.SOUTH);
        frame.setSize(810, 310);
        frame.setVisible(true);
    }

    //action listener for the buttons 
    public void actionPerformed(ActionEvent e) {

        int i = Integer.valueOf(amount.getText());
        order = new String[i];

        if (e.getSource() == processItem) {
            processItem();

        } else if (e.getSource() == confirmItem) {
            confirmItem();
            setProcessItemBtn();

        } else if (e.getSource() == viewOrder) {
            System.out.println(order.length);


        } else if (e.getSource() == finishOrder) {

        } else if (e.getSource() == newOrder) {
                newOrder();
        } else if (e.getSource() == exit) {
            System.exit(0);
        }
    }

//Creating getters and setters to change the text for the buttons and labels, as well as getting text from the textfields.
    public void setProcessItemBtn() {
        processItem.setText("Process Item #");
        processItem.validate();
        processItem.repaint();
    }

    public void setConfirmItemBtn(int num) {
        confirmItem.setText("Confirm Item #" + num);
        confirmItem.validate();
        confirmItem.repaint();
    }

    public void setViewOrderBtn(String title) {

        viewOrder.validate();
        viewOrder.repaint();
    }

    public void setInfo(String title, String price) {

        info.setText(title + " " + price);
        info.validate();
        info.repaint();

    }

    public String getAmount() {
        String str = amount.getText();
        return str;
    }
    public void confirmItem(){
        i = Integer.valueOf(amount.getText());
        int amountOrdered = Integer.valueOf(quantity.getText());
        System.out.println(k);



          for (k = 0; k < amountOrdered; k++){
               order[j] = id.getText() + " " + info.getText();

               j++;

          }
           System.out.println(order[2]);
          System.out.println(k);
            if ((i-1)<j){
                processItem.setEnabled(false);
                confirmItem.setEnabled(false);

            }else{
                processItem.setEnabled(true);
                confirmItem.setEnabled(false);
            }



    }
    public void processItem(){
         boolean ifFound  = false;


            confirmItem.setEnabled(true);
            processItem.setEnabled(false);
            BookIO findInfo = new BookIO();
            ifFound = findInfo.readFile(id.getText(), this);

            if (ifFound == true)
                JOptionPane.showMessageDialog(null, "Found it");
            else {
                JOptionPane.showMessageDialog(null, "Book ID " + id.getText() + " not found in file");
                confirmItem.setEnabled(false);
                processItem.setEnabled(true);
            }
    }
    public void newOrder(){

            amount.setText(" ");
            id.setText(" ");
            quantity.setText(" ");
            info.setText(" ");
            total.setText(" ");



    }
}
包装书;
导入book.BookIO;
导入java.awt.BorderLayout;
导入java.awt.*;
导入javax.swing.*;
导入java.awt.GridBagLayout;
导入java.awt.GridBagConstraints;
导入java.awt.Insets;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
/**
*
* 
*/
公共类UserInterface实现ActionListener{
int j=0;
int i;
//容器
串你好;
JFrame=新的JFrame(“Java程序”);
JPanel-toppane=newjpanel(newgridbaglayout());
JPanel bottomPane=newjpanel(newgridbaglayout());
//钮扣
JButton processItem=新JButton(“过程项#1”);
JButton confirmItem=新JButton(“确认项目1”);
JButton视图顺序=新JButton(“视图顺序”);
JButton finishOrder=新JButton(“完成订单”);
JButton newOrder=新JButton(“新订单”);
JButton exit=新JButton(“exit”);
//文本字段
JTextField金额=新的JTextField();
JTextField id=新的JTextField();
JTextField数量=新的JTextField();
JTextField info=新的JTextField(“”);
JTextField总计=新的JTextField();
//标签
JLabel num=新的JLabel(“按此顺序输入项目数:”);
JLabel bookID=新JLabel(“为项目1输入图书ID”);
JLabel quantityItem=新的JLabel(“为项目输入数量#1:”);
JLabel itemInfo=新JLabel(“项目1:”);
JLabel小计=新JLabel(“0项订单小计”);
公共字符串[]顺序=新字符串[i];
int k=0;
公共空间startUI(){
UserInterface gui=新的UserInterface();
gui.bookingUI();
}
公开作废簿记(){
//在UI中设置窗口和窗格
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagConstraints c=新的GridBagConstraints();
框架设置尺寸(800300);
//将标签添加到面板
c、 插图=新插图(5,0,0,0);
c、 gridx=2;
c、 gridy=1;
添加(数量,c);
c、 gridx=2;
c、 gridy=2;
添加(bookID,c);
c、 gridx=2;
c、 gridy=3;
添加(数量项目c);
c、 gridx=2;
c、 gridy=4;
添加(项目信息,c);
c、 gridx=2;
c、 gridy=5;
添加(小计,c);
顶面.立根面(颜色.绿色);
框架。添加(toppane);
//将文本字段添加到面板
c、 ipadx=400;
c、 插图=新插图(5,10,0,0);
c、 gridx=3;
c、 gridy=1;
添加(数量,c);
c、 gridx=3;
c、 gridy=2;
添加(id,c);
c、 gridx=3;
c、 gridy=3;
添加(数量,c);
c、 gridx=3;
c、 gridy=4;
添加(信息,c);
c、 gridx=3;
c、 gridy=5;
添加(总计,c);
//----------------------------------------------------------按钮窗格-------------------------
//将按钮添加到窗格中---------------------------------------------------------------
GridBagConstraints b=新的GridBagConstraints();
b、 插图=新插图(5,5,5,5);
b、 ipadx=10;
b、 ipady=10;
b、 gridx=1;
b、 gridy=0;
底部窗格。添加(processItem,b);
processItem.addActionListener(此);
b、 gridx=2;
b、 gridy=0;
底部窗格。添加(确认项,b);
confirmItem.setEnabled(false);
confirItem.addActionListener(此);
b、 gridx=3;
b、 gridy=0;
底部窗格。添加(视图顺序,b);
viewOrder.setEnabled(true);
viewOrder.addActionListener(此);
b、 gridx=4;
b、 gridy=0;
底部窗格。添加(finishOrder,b);
finishOrder.setEnabled(true);
finishOrder.addActionListener(这个);
b、 gridx=5;
b、 gridy=0;
底部窗格。添加(newOrder,b);
addActionListener(这个);
b、 gridx=6;
b、 gridy=0;
底部窗格。添加(出口,b);
exit.addActionListener(this);
底部窗格。背景(颜色。蓝色);
框架。添加(底部窗格,边框布局。南部);
帧设置大小(810310);
frame.setVisible(true);
}
//按钮的操作侦听器
已执行的公共无效操作(操作事件e){
int i=Integer.valueOf(amount.getText());
顺序=新字符串[i];
如果(例如getSource()==processItem){
processItem();
}else if(e.getSource()==confirItem){
确认项();
setProcessItemBtn();
}else if(例如getSource()==viewOrder){
系统输出打印项次(订单长度);
}else if(e.getSource()==finishOrder){
}else if(例如getSource()==newOrder){
新秩序();
}else if(例如getSource()=退出){
系统出口(0);
}
}
//创建getter和setter来更改按钮和标签的文本,以及从textfields获取文本。
public void setProcessItemBtn(){
processItem.setText(“processItem#”);
processItem.validate();
processItem.repaint();
}
公共void setconfirimitembtn(int num){
confirmItem.setText(“确认项目”#“+num);
confirmItem.validate();
confirmItem.repaint();
}
公共无效setViewOrderBtn(字符串标题){
validate();
viewOrder.repaint();
}
public void setInfo(字符串标题、字符串价格){
信息设置文本(标题+价格);
info.validate();
info.repaint();
}
公共字符串getAmount(){
String str=amount.getText();
order = new String[i];
String[] newOrder = new String[newLength];
System.arraycopy(order, 0, newOrder, 0, order.length);
order = newOrder;
order = java.util.Arrays.copyOf(order, order.length + 1); // increase array length by 1