我需要在1和0的字符串中打印元素的索引,当且仅当1和0并排重复多次。如何比较单个字符串中的元素?
例如: 输入: “0010011” 输出: “0,3,5”
甲重复开始于索引0,3和5
这里是我现在有
Scanner keyboard = new Scanner(System.in);
ArrayList runs = new ArrayList();
System.out.println("Enter non empty string of 1s and 0s");
String input = keyboard.nextLine();
char[] array = input.toCharArray();
for(int i = 0; i < input.length(); i++)
{
if(array[i] == array[i++])
{
runs.add(i);
}
}
for(int i = 0; i<= array.length; i++)
{
System.out.println(runs);
}
当我测试这个,我尝试输入“00100”并得到“1,3,5”的输出。来自“0010011”以上的另一个测试输入并获得“1,3,5,7”。它似乎在打印奇数,而不是数字开始重复的索引。任何人都可以发现我做错了什么吗?我有一种感觉,它来自我在第一次循环中的比较。
提示:您如何看待'我++'不会(在'阵列[I ++]')? –
@ZouZou我的印象是,它获得了我目前所在的前面的下一个元素。 – Reeggiie
@ user3345200不,不幸的不是。 'i ++'返回'i'的值,并在返回后递增它。 (“后增”) – exception1