如何在Java中声明动态String数组

我使用String Array声明为zoom z[]=new String[422]; 。 但是这个数组存储的值从032 ,所以在循环值32之后我得到null pointer exception

如何在java中解决这个问题?

如何在java中声明动态数组?

您希望使用SetList实现(例如HashSetTreeSet等,或ArrayListLinkedList等),因为Java没有动态大小的数组。

 List zoom = new ArrayList<>(); zoom.add("String 1"); zoom.add("String 2"); for (String z : zoom) { System.err.println(z); } 

编辑:这是使用varargs使用任意数量的值初始化List的更简洁方法:

 List zoom = Arrays.asList("String 1", "String 2", "String n"); 

不,没有办法在java中使数组长度动态化。 您可以使用ArrayList或其他List实现。

也许你正在寻找Vector 。 如果需要,它的容量会自动扩展。 这不是最好的选择,但会在简单的情况下完成。 值得花时间阅读ArrayList

您正在寻找的是DefaultListModel – 动态字符串列表变量。

这是一个使用DefaultListModel的整个类,就像它是Delphi的TStringList一样。 区别在于您可以无限制地将字符串添加到列表中,并且通过指定条目int可以获得单个条目。

FileName:StringList.java

 package YOUR_PACKAGE_GOES_HERE; //This is the StringList Class by i2programmer //You may delete these comments //This code is offered freely at no requirements //You may alter the code as you wish import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.DefaultListModel; public class StringList { public static String OutputAsString(DefaultListModel list, int entry) { return GetEntry(list, entry); } public static Object OutputAsObject(DefaultListModel list, int entry) { return GetEntry(list, entry); } public static int OutputAsInteger(DefaultListModel list, int entry) { return Integer.parseInt(list.getElementAt(entry).toString()); } public static double OutputAsDouble(DefaultListModel list, int entry) { return Double.parseDouble(list.getElementAt(entry).toString()); } public static byte OutputAsByte(DefaultListModel list, int entry) { return Byte.parseByte(list.getElementAt(entry).toString()); } public static char OutputAsCharacter(DefaultListModel list, int entry) { return list.getElementAt(entry).toString().charAt(0); } public static String GetEntry(DefaultListModel list, int entry) { String result = ""; result = list.getElementAt(entry).toString(); return result; } public static void AddEntry(DefaultListModel list, String entry) { list.addElement(entry); } public static void RemoveEntry(DefaultListModel list, int entry) { list.removeElementAt(entry); } public static DefaultListModel StrToList(String input, String delimiter) { DefaultListModel dlmtemp = new DefaultListModel(); input = input.trim(); delimiter = delimiter.trim(); while (input.toLowerCase().contains(delimiter.toLowerCase())) { int index = input.toLowerCase().indexOf(delimiter.toLowerCase()); dlmtemp.addElement(input.substring(0, index).trim()); input = input.substring(index + delimiter.length(), input.length()).trim(); } return dlmtemp; } public static String ListToStr(DefaultListModel list, String delimiter) { String result = ""; for (int i = 0; i < list.size(); i++) { result = list.getElementAt(i).toString() + delimiter; } result = result.trim(); return result; } public static String LoadFile(String inputfile) throws IOException { int len; char[] chr = new char[4096]; final StringBuffer buffer = new StringBuffer(); final FileReader reader = new FileReader(new File(inputfile)); try { while ((len = reader.read(chr)) > 0) { buffer.append(chr, 0, len); } } finally { reader.close(); } return buffer.toString(); } public static void SaveFile(String outputfile, String outputstring) { try { FileWriter f0 = new FileWriter(new File(outputfile)); f0.write(outputstring); f0.flush(); f0.close(); } catch (IOException ex) { Logger.getLogger(StringList.class.getName()).log(Level.SEVERE, null, ex); } } } 

OutputAs方法用于输出int,double等条目…因此您不必从另一侧的字符串转换。

SaveFile和LoadFile用于保存文件和从文件加载字符串。

StrToList和ListToStr用于在每个条目之间放置分隔符。

恩。 1 <> 2 <> 3 <> 4 <>如果“<>”是分隔符,则1 2 3和4是条目。

AddEntry和GetEntry将在DefaultListModel中添加和获取字符串。

RemoveEntry用于从DefaultListModel中删除字符串。

你在这里使用DefaultListModel而不是数组,如下所示:

 DefaultListModel list = new DefaultListModel(); //now that you have a list, you can run it through the above class methods. 

Array.newInstance(Class componentType, int length)方法用于创建动态长度的数组。

可以使用Array.newInstance(Class componentType, int... dimensions)方法类似地创建多维数组。