[英]Java calling array from another class
我试图将对象的arrayList
存储到从数组ipvalue[]
创建的文本文件中,该文件在另一个类中实例化。 我的问题是每当我尝试将数组从Mainframe
类加载到Arraystorage
类时,它会将整个数组显示为null输出。 我想问题是数组数据是在Mainframe方法中生成的,当我从另一个类调用数组时,它只是在初始化时获取数组。 所以我的问题是如何在分配值而不是初始化数组后如何访问数组。
new String[50]
mainframe class:
public class Mainframe extends javax.swing.JFrame {
static int ipcounter = 0;
public static String[] ipvalue = new String [50];
/**
* String a[]Creates new form Mainframe
*/
public Mainframe() {
try {
initComponents();
this.setLocation(500,250);
Nettest.main(null);
Display.setText(Nettest.indicator);
Arraystorage.main(null);
Path path = Paths.get("ipcounter.txt");
File file = new File("ipcounter.txt");
FileReader in = new FileReader("ipcounter.txt");
BufferedReader br = new BufferedReader(in);
readline = Integer.parseInt(br.readLine());
in.close();
ipcounter = readline;
if(ip.tracker.Nettest.status == true){
ipvalue[ipcounter] = Readipfromurl.inputLine;
// crosscheck();
Writer writer = null;
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("ipcounter.txt"), "utf-8"));
writer.write(String.valueOf(ipcounter+1));
writer.close();
System.out.println(ipvalue[ipcounter]);
ipcounter++;
arraystorage class:
public class Arraystorage implements Serializable{
public static void main(String[] args) throws
ClassNotFoundException {
ArrayList<String> list = new ArrayList<String>();
for (int i=0; i<50;i++){
list.add(Mainframe.ipvalue[i]);}
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new
FileWriter("data.txt")));
for( int x = 0; x < list.size(); x++)
{
out.println(list.get(x));
}
out.close();
} catch (IOException ex) {
Logger.getLogger(Arraystorage.class.getName()).log(Level.SEVERE,
null, ex);
}
简而言之,您不会调用Mainframe()
来为数组填充数据。 在需要使用ipvalue
数组之前,您应该在main
方法中执行此操作。 所以,只需在Mainframe
实例上调用此方法:
public static void main(String[] args) throws ClassNotFoundException {
ArrayList<String> list = new ArrayList<String>();
Mainframe frame = new Mainframe();
frame.Mainframe();
for (int i=0; i<50;i++){
list.add(Mainframe.ipvalue[i]);
}
... // do the rest
很长一段时间,请阅读至少Oracle Java教程,了解Java基础知识的命名约定,代码结构等等
创建一个静态块初始化器:
public class Mainframe extends javax.swing.JFrame {
static int ipcounter = 0;
public static String[] ipvalue = new String [50];
static {
File file = new File("ipcounter.txt");
FileReader in = new FileReader("ipcounter.txt");
BufferedReader br = new BufferedReader(in);
// Fill your ipvalue
in.close();
}
// The rest of your class definition
public MainFrame() {
}
你们大概是对的,但我在大型机类中找到了另一种解决方案,我称之为arraystorage的主方法Arraystorage.main(null);
在为数组赋值后,它可以工作!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.