有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用for循环生成此模式?

我想制作一个java程序,要求输入一个数字作为输入数据,并生成以下数字序列,该序列必须显示用户指示的数字量,但它只能打印从1到10的数字,然后再降序

输入:7 输出:1、2、3、4、5、6、7

输入:12 输出:1、2、3、4、5、6、7、8、9、10、10、9

输入:22 输出:1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1,1,2

这就是我目前正在处理的问题:

System.out.print("Input number > ");
int number = sc.nextInt();
int j = 0;
boolean ascending = true;
for(int i = 1; i <= n4; i++){
    if(ascending){
        if(j >= 10){
            j--;
            ascending = false;
        } else {
            j++;
        }
    } else {
        if (j <= 1){
            j++;
            ascending = true;
        } else {
            j--;
        }
    }
    System.out.print(j + ", ");
}

共 (1) 个答案

  1. # 1 楼答案

    在您的序列中,棘手的一点是限制(1和10)被打印两次。这意味着序列中不是两个而是三个增量值:+1,然后是0,然后是-1。以下逻辑应足以产生序列:

    int numLoops = sc.next();
    
    int delta = +1;
    int currentValue = 1;
    StringBuilder result = new StringBuilder();
    
    for (int i = 0; i < numLoops; i++) {
        result.append(Integer.toString(currentValue) + ", ");
        currentValue += delta;
    
        if (currentValue >= 10) delta = (delta == 0) ? -1 : 0;
        if (currentValue <= 1 ) delta = (delta == 0) ? +1 : 0;
    }
    System.out.println(result.toString());
    

    请注意StringBuilder实例用于组装输出,而不是对System.out的一系列调用。这更时髦