【问题标题】:Need Java to loop only one time and create a single column/row只需要 Java 循环一次并创建单个列/行
【发布时间】:2021-06-25 23:36:17
【问题描述】:

这是一个任务,是特别要求的。我知道创建一个只执行一次的嵌套 for 循环似乎毫无意义,所以想澄清一下。

作业问题让我有点困惑,但指出:

“编写一个使用两个嵌套 FOR 循环的 Java 程序。外循环中使用的值将是用户输入值。内循环将使用输入值除以 2。使用范围为 1 到外循环中用户输入的数字。内循环将打印 1 到除法结果。但是,标题指出,“学生正确使用 Java 并创建嵌套 FOR 循环并打印正确的行号和列号。”

我最初以为我只需要将输入值除以 2 并打印该值,但现在我觉得我应该以简单的行和列格式打印输入值? (如果其他人对此有清楚的了解,请不要犹豫发表评论)

基于我的代码,我很难让它只执行一次,并且在打印正确的行和列时也遇到了问题。我附上了我对下面代码的尝试(这是一门入门课程,仅供参考)。任何反馈/帮助将不胜感激!

import java.util.Scanner;

class rowCol {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Enter a number: ");

        int n = sc.nextInt();
        sc.close();

        System.out.println(" \t1");

        for (n = 0; n < 1; n++) {
            for (n = 0; n < 1; n++) {
                System.out.println("1 \t" + n);
            }
            System.out.println();
        }

    }
}

【问题讨论】:

  • 假设输入数字10。外循环应该从 1 运行到 10;内循环从 1 变为 5 (10 / 2)。

标签: java for-loop


【解决方案1】:

我认为他的意思是外部 for 循环应该运行到 n(用户输入的值),而内部 for 循环将运行到 n/2(除值)

class rowCol {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Enter a number: ");

        int n = sc.nextInt();
        sc.close();

//        System.out.println(" \t1");
        
        int val = n/2; 
        
        for (int i  = 1;i<=n; i++) {
            // printing from range 1 to n in the outer loop 
            System.out.print(i);
            for (int j = 1; j<=val; j++) {
                // printing from 1 to divided value in the inner loop 
                System.out.print(" \t" +j);
            }
            System.out.println();
        }

    }
}

当你运行它时,它会以这种格式给出输出。

【讨论】:

  • 这确实有道理,谢谢!但是,当我尝试运行您的代码以及其他答案时,我什至没有提示输入值。它运行,并继续运行。是我的编译器吗?我正在使用 VS Code 作为参考。
  • 为了验证目的,只检查你是否能够在控制台上打印“Hello World”(在用户输入之前添加这个程序),你能在控制台中看到它吗?我是在 eclipse 上做的
  • 我最终忘记了我需要添加一个包。呃,对不起。感谢您的帮助和洞察力,它现在工作得很好!我觉得您对问题的解释是正确的,所以再次感谢您!在问这里之前我什至不能告诉你我花了多少时间哈哈
【解决方案2】:

现在您在变量n 中接受来自用户的值,然后在循环中将其更改为0。这样做你会失去你从用户那里得到的输入。如果您一开始就失去了从用户那里接受的内容,您将无法计算 n/2

您必须为两个循环定义不同的变量/计数器。您的外部循环将从1 转到您接受的号码,内部循环将从1 转到您从用户那里接受的号码的一半。

您的最终代码应如下所示(仅用于说明目的):

import java.util.Scanner;

class rowCol {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a number: ");
        int n = sc.nextInt();
        sc.close();
        for (int row = 1; row <= n; row++) {
            // Print Row Number
            System.out.print("Row: " + row + "\t");
            for (int col = 1; col <= n/2; col++) {
                // Print Column Number
                System.out.print("Column: " + col + "\t");
            }
            // Print New Line
            System.out.println();
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多