我正在使用字符串数组声明为zoom z[]=new String[422];
。但是这个数组存储的值从0
到32
,所以我得到null pointer exception
后循环值32
。如何在Java中声明动态字符串数组
如何在java中解决这个问题?
我该如何在java中声明一个动态数组?
我正在使用字符串数组声明为zoom z[]=new String[422];
。但是这个数组存储的值从0
到32
,所以我得到null pointer exception
后循环值32
。如何在Java中声明动态字符串数组
如何在java中解决这个问题?
我该如何在java中声明一个动态数组?
您想使用Set
或List
实现(例如HashSet
,TreeSet
等,或ArrayList
,LinkedList
,等等。),因为Java没有动态大小的数组。
List<String> zoom = new ArrayList<>();
zoom.add("String 1");
zoom.add("String 2");
for (String z : zoom) {
System.err.println(z);
}
编辑: 下面是使用varargs值任意数量来初始化列表一个更简洁的方式:
List<String> zoom = Arrays.asList("String 1", "String 2", "String n");
注意,这应该是“ArrayList”,而不是“List”;这给我带来了一些问题。 – 2013-03-24 18:40:13
使用'列表
当我尝试使用JDK 1.6和1.7时,会导致编译错误。我不相信,不会引起争论警告。 – 2013-04-02 08:00:28
不,没有办法在java中使数组长度动态化。您可以使用ArrayList
或其他List
实现。
也许你正在寻找Vector
。如果需要,它的容量会自动扩展。这不是最好的选择,但会在简单的情况下完成。您值得花时间阅读ArrayList
。
你在找什么是DefaultListModel - 动态字符串列表变量。
这是一个使用DefaultListModel的整个类,就好像它是Delphi的TStringList一样。不同之处在于,您可以无限制地将字符串添加到列表中,并且您可以通过指定条目int来获取单个条目。
文件名: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,双,等...这样你就不必从字符串转换的另一边。
SaveFile & LoadFile是保存和加载字符串文件和文件。
StrToList & ListToStr是在每个条目之间放置分隔符。
ex。 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)
方法类似地创建多维数组。
如果只是有一种描述某些代码的方式,比如....我不知道,给我们看代码... – skaffman 2010-08-30 14:56:37