JAVA循环嵌套的简单问题

s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值
要求:使用循环的嵌套完成,n要能任意输入。若累加和s的值小于等于500,则直接输出s的值;若s的值大于500,则要求在s刚刚大于500时就停止累加,并且输出此时的项数和s的值。

望采纳,采纳后源码发你额

img

img

给个例子参考:

import java.util.Scanner;

public class App {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入正整数n:");
        int n = scan.nextInt();
        int s = 0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=i;j++){
                s+=j;
                if(s<500){
                    continue;
                }else{

                    break;
                }
            }
            if(s>=500){
                System.out.println("s的值已经大于500,当前值是:"+s+", 当前循环到了第"+i+"项");
                break;
            }else if(i==n){
                System.out.println("s的值是:"+s);
            }
        }
    }
}

img

int n = 100;
BigDecimal s = BigDecimal.ZERO;
boolean flag = true;
int index = 0;
for (int i = 1; i <= n; i++) {
BigDecimal an = new BigDecimal((1 + i) * i).divide(new BigDecimal(2));
s = s.add(an);
if (s.compareTo(new BigDecimal("500")) == 1) {
flag = false;
index = i;
break;
}
}
if (flag) {
System.out.println("s:" + s.toPlainString());
} else {
System.out.println("项数:" + index + ",s:" + s.toPlainString());
}


 Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] dp = new int[n+1];
        int sum = 0;
        int i=1;
        for(;i<=n;i++){
            dp[i] = dp[i-1] + i;
            sum += dp[i];
            if(sum > 500){
                i++;
                break;
            }
        }
        System.out.println(" 项数 = " + (i-1) + " , s的值 = "+sum);