每天都在头秃 2023-07-04 20:56 采纳率: 96.7%
浏览 25
已结题

for循环比循环体多执行了一次

我在写程序时,发现我的方法中的for循环多执行了一次,我有些不太明白为什么会这样,希望可以指点一下

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;


public class A2_Box {
    //delete the first element 
    public static int[] removeFirstElement(int[] arr) {
        return Arrays.copyOfRange(arr, 1, arr.length);
    }

    //how to get final result
    //let we start from index 0
    public static int getResult(int m,int[] arr){
        ArrayList<Integer> arrayList =new ArrayList<Integer>();
        int len=0;//the number of positive result
        int sum=0;//the sum of arr
        for(int i=0;i<m;i++){
            //get the sum and the length when it's positive
            for(int j=0;j<arr.length;j++){
                sum=sum+arr[j];
                if(sum>0){
                    len=j-i+1+m-arr.length;
                    arrayList.add(len);
                }
            }
            //can be delete
            for(int s=0;s<arr.length;s++){
                System.out.print(arr[s]+" ");
            }
            System.out.println();
            sum=0;
            arr=removeFirstElement(arr);
        }
        int[] result =new int[arrayList.size()];
        for(int k =0;k<arrayList.size();k++){
            result[k]=arrayList.get(k);
            System.out.print(result[k]+" ");
        } 
        System.out.println();
        Arrays.sort(result);
        return result[arrayList.size()-1];
        
    }
    
    public static void main (String[] args) throws IOException{
       BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));
        //read m
        String a =reader.readLine();
        int m =Integer.parseInt(a);
        //read array
        String b =reader.readLine();
        String[] c =b.split(" ");
        int[] arr =new int[m];
        for(int i=0;i<m;i++){
            arr[i]=Integer.parseInt(c[i]);
        }

        //use the method
        int result =getResult(m, arr);
        System.out.println(result);

    }
}

  • 写回答

3条回答 默认 最新

  • 全栈若城 全栈领域优质创作者 2023-07-04 21:12
    关注

    将这里如图

    img


    中 i<m改为i<m-1 就好了, 因为 循环的时候 通过 removeFirstElement方法将数组的第一个元素删除,所以内层的循环次数会随着外层循环的执行逐渐减少,
    如有帮助给个采纳谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月4日
  • 创建了问题 7月4日

悬赏问题

  • ¥15 pdfplumber提起文本内容如何过滤水印内容
  • ¥15 kingbase容器启动失败,sudo:/bin/sudo must be owned by uid 0 and have the setuid bit set
  • ¥20 黑神话悟空调用机械硬盘导致卡顿
  • ¥15 vue中使用antv-x6
  • ¥15 qt编译失败,环境变量已加,但还是报错
  • ¥15 用顺序表实现学生信息的管理: 学生类(Student):学号(no)、姓名(name)、分数(double),对学生信息进行存取、插入、删除、查找操作,给出代码和运行结果图。
  • ¥15 minted包显示缩进符的问题
  • ¥15 根据图片连接电路51单片机proteus汇编语言仿真4位数码管静态显示
  • ¥15 .net项目集成阿里云智能语音SDK
  • ¥15 c#关于WPS中网格线隐藏的属性