String [] array=new String[7];
array[0]="a";
array[1]="b";
array[2]="c";
array[3]="d";
array[4]="e";
array[5]="f";
array[6]="g";
for (int i=0;i<array.Length;i++){
if(array[i].equals("b")) {
// check array from the first one and when it is "b" starts
// to print the string value till "e"
System.out.println(array[i]);
}
if (array[i].equals("e"))
break;
}
我有一个字符串数组,我希望在点击“b”时打印所有字符串值并在“e”处停止
无论如何我能做到吗?
我的预期结果是:
b
c
d
e
答案 0 :(得分:3)
Java-9解决方案将是:
Arrays.stream(array)
.dropWhile(e -> !"b".equals(e))
.takeWhile(e -> !"f".equals(e))
.forEach(System.out::println);
答案 1 :(得分:3)
List<String> list = Arrays.asList(array);
list.subList(list.indexOf("b"), list.indexOf("e") + 1)
.forEach(System.out::println);
*假设数组(1)中存在"b"
和"e"
,"e"
(2)之后存在"b"
。
答案 2 :(得分:2)
只需找到开始和结束索引并迭代它 -
List<String> arrList = Arrays.asList(arr);
int indexOfB = arrList.indexOf("b");
int indexOfE = arrList.indexOf("e");
for(int i =indexOfB; i<=indexOfE; i++){
System.out.println(arr[i]);
}
答案 3 :(得分:1)
您可以使用标记来了解第一次出现是否需要打印当前值。
String[] array = {"a", "b", "c", "d", "e", "f", "g"};
boolean toPrint = false;
for (int i = 0; i < array.length; i++) {
if(array[i].equals("b")) //Find `b`, flag fo printing
toPrint = true;
if(toPrint)
System.out.println(array[i]);
if (array[i].equals("e")) //Find `e`, break the loop
break;
}
这将在开始时将布尔值设置为true
,并将打印每个值,直到找到第二个值。然后它会打破循环。
答案 4 :(得分:0)
你可以在一个变量中找到并保存'b'的索引,并在'e'之后找到相同的'e',之后比较if(indexB <= indexE)
,如果是,则从b打印全部直到e
修改强>
public static void main(String[] arg) {
String[] array = new String[]{"a", "b", "c", "d", "e", "f", "g"};
bigFor: for (int i = 0; i < array.length; i++) {
if (array[i].equals("b")) {
for(int x = i; x < array.length; x++) {
System.out.println(array[x]);
if(array[x].equals("e")) {
break bigFor;
}
}
}
}
}