首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到斜坡上的范围

找到斜坡上的范围
EN

Stack Overflow用户
提问于 2022-09-22 10:49:21
回答 5查看 44关注 0票数 0

你好,我的代码出问题了。我正在尝试迭代一个数组列表,并查看哪些索引的值正在增加。行= 5、7、10、11、8、6、5、4、7、8

代码语言:javascript
复制
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;                                              
    }                                                          
}                                                              

我的输出结果是:

代码语言:javascript
复制
0-1
1-2
2-3
7-8
8-9

但是,我希望输出结果如下所示:

代码语言:javascript
复制
0-3
7-9
EN

回答 5

Stack Overflow用户

发布于 2022-09-22 11:36:57

你直接打印后,如果存在。您必须在第一个if之后添加另一个查询。像这样的事情应该能解决问题

代码语言:javascript
复制
`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;                                              
}                                                          

}`

票数 0
EN

Stack Overflow用户

发布于 2022-09-22 11:38:05

您正在打印每一行,因此预期输出是一个单元一个单元移动。

您可以做的是创建一个最初设置为false的布尔值。然后,如果条件lines.get( i ) < lines.get(i + 1)为真,则将其设置为true,并存储索引i。

当条件lines.get(i) < lines.get(i + 1)不为真时,它将再次更改为false。一次存储索引,然后再打印。

票数 0
EN

Stack Overflow用户

发布于 2022-09-22 11:40:40

琐碎的解决方案:

代码语言:javascript
复制
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 );
}

这很可能是进一步优化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73813328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档