好的,所以这里有一些逻辑思考...我想要做的是循环遍历字符串,直到我点击空/空字符串..然后停止。所有这些都把这些字符串放在字符串数组中......
以下是代码示例。我知道这是错的,但希望能让你知道我想要实现的目标:
int i;
wepN = new String[100];
int wepQty = 0;
boolean anyLeft = true;
while (anyLeft == true) {
for(i = 0;i < 100;i++) {
if (data.getItems().get(i).getName() == null) {
anyLeft = false;
System.out.println(data.getItems().get(i).getName() + " -NO MOARE");
}
wepN[i] = data.getItems().get(i).getName();
wepQty++;
}
}
答案 0 :(得分:2)
你可以使用break来退出for循环,就像你使用switch语句一样:
String[] wepN = new String[100];
int wepQty = 0;
for (int i=0; i < wepN.length; i++) {
if (data.getItems().get(i).getName() == null || "".equals(data.getItems().get(i).getName())) {
System.out.println(data.getItems().get(i).getName() + " -NO MOARE");
break;
}
wepN[i] = data.getItems().get(i).getName();
wepQty++;
}
答案 1 :(得分:0)
这样的事情就是你所追求的:
Collection<String> original = new LinkedList<String>();
original.add("String1");
original.add("String2");
original.add("");
original.add(null);
original.add("String 3");
Collection<String> tested = new LinkedList<String>();
for(String string: original) {
if(null != string && !string.isEmpty()) {
tested.add(string);
}
}
String[] stringArray = tested.toArray(new String[tested.size()]);
我认为根本不会使用数组,只是坚持使用Collection类型。
如果你想停止第一次出现空字符串或空字符串,请执行以下操作:
if(null != string && !string.isEmpty()) {
tested.add(string);
} else {
break;
}
答案 2 :(得分:0)
无数种方式:
String currentName;
for(i=0;i<100;++i) {
currentName=data.getItems().get(i).getName();
if(currentName == null || currentName.length() ==0) {
break;
}
// continue with old code here
}
如果你不喜欢明确的休息时间:
String currentName;
while(anyLeft) {
currentName=data.getItems().get(i).getName();
anyLeft= currentName != null && currentName.length() > 0;
if(anyLeft) {
// continue with old code here
}
}
答案 3 :(得分:0)
为什么你需要在这里使用?
怎么样:
for (int i = 0; i < 100 && data.getItems().get(i).getName() != null; i++ {
wepN[i] = data.getItems().get(i).getName();
wepQty++;
}
或
int i = 0;
while (data.getItems().get(i).getName() != null && i < 100) {
wepN[i] = data.getItems().get(i).getName();
wepQty++;
i++
}
答案 4 :(得分:0)
根据原件是否为集合,需要考虑一些因素。
如果您有数组Data []数据,
String[] dataCopy = new String[data.length];
int i = 0;
for (Data datum: data){
if (datum==null)break;
dataCopy[i++] = datum;
}
但这不是最佳的,因为如果原始数据有100个单元格但第50个单元格是找到空字符串的位置,那么你将分配比所需更多的数组单元格。
使用ArrayList可以让JVM管理单元格的扩展,这样在结束时你只需使用toArray()将ArrayList转换为数组。它实际上不是转换,但是toArray从ArrayList中撤回内部管理的数组。
ArrayList<String> dataList = new ArrayList<String>(data.length);
for (Data datum: data){
if (datum==null)break;
dataList.add(datum);
}
String[] dataCopy = {};
dataCopy = datalist.toArray(dataCopy);
或者,如果您正在处理的数组是数据的成员:
ArrayList<String> dataList = new ArrayList<String>(data.length);
for (Data datum: data.getItems()){
String name = datum.getName();
if (name==null)break;
dataList.add(name);
}
String[] dataCopy = {};
dataCopy = datalist.toArray(dataCopy);
或者如果原始数据结构实现了Iterable。假设项目类别为Item。
Iterator<Item> itemit = data.getItems().iterator();
ArrayList<String> dataList = new ArrayList<String>(data.length);
while(itemit.hasNext()){
String name = itemit.next().getName;
if (name==null)break;
dataList.add(name);
}
String[] dataCopy = {};
dataCopy = datalist.toArray(dataCopy);