你好,我的代码出问题了。我正在尝试迭代一个数组列表,并查看哪些索引的值正在增加。行= 5、7、10、11、8、6、5、4、7、8
for (int i = 0; i < lines.size(); i++) { //iterate over array
// System.out.println(lines.get(i) + " ");
if (i == 9){
break;
}else if (lines.get(i) < lines.get(i + 1)){
System.out.println((i) + "-" + (i+1));
}else {
continue;
}
} 我的输出结果是:
0-1
1-2
2-3
7-8
8-9但是,我希望输出结果如下所示:
0-3
7-9发布于 2022-09-22 11:36:57
你直接打印后,如果存在。您必须在第一个if之后添加另一个查询。像这样的事情应该能解决问题
`for (int i = 0; i < lines.size(); i++) { //iterate over array
// System.out.println(lines.get(i) + " ");
if (i == 9){
break;
}else if (lines.get(i) < lines.get(i + 1)){
if(lines.get(i) > lines.get(i+1){
System.out.println((i) + "-" + (i+1));
}
}else {
continue;
} }`
发布于 2022-09-22 11:38:05
您正在打印每一行,因此预期输出是一个单元一个单元移动。
您可以做的是创建一个最初设置为false的布尔值。然后,如果条件lines.get( i ) < lines.get(i + 1)为真,则将其设置为true,并存储索引i。
当条件lines.get(i) < lines.get(i + 1)不为真时,它将再次更改为false。一次存储索引,然后再打印。
发布于 2022-09-22 11:40:40
琐碎的解决方案:
private static void compare( int start, int end )
{
if( start != end )
{
System.out.println( start + " - " + end );
}
}
public static void main(String args[]) {
int[] lines = { 5, 7, 10, 11, 8, 6, 5, 4, 7, 8 };
int start = 0;
for( int i = 0; i < lines.length - 1; i++ )
{
if( lines[i] >= lines[i + 1] )
{
compare( start, i );
start = i + 1;
}
}
compare( start, lines.length - 1 );
}这很可能是进一步优化的。
https://stackoverflow.com/questions/73813328
复制相似问题