【问题标题】:Issue with getting this java program to display the proper whitespace in the answer让这个 Java 程序在答案中显示正确的空格的问题
【发布时间】:2023-01-30 00:30:52
【问题描述】:

所以我的问题是,我的输出似乎是正确的,除了它给了我 0/10 的信用,因为在每种情况下输出倒数到 1 后的空白。它说我需要一个换行符,但我已经尝试了几件事,每次都是相同的输出。

2.31 LAB:冰雹序列 给定一个正整数 n,以下规则将始终创建一个以 1 结尾的序列,称为冰雹序列:

如果 n 是偶数,则除以 2 如果 n 是奇数,则将其乘以 3 并加 1(即 3n +1) 继续直到 n 为 1 编写一个程序,读取一个整数作为输入,并打印从输入的整数开始的冰雹序列。格式化输出,以便每行打印十个整数,每个整数由制表符 (\t) 分隔。

输出格式可以实现如下:

System.out.print(n + "\t");

例如:如果输入是:

25 输出是:

25 76 38 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

import java.util.Scanner;

 
public static void main(String[] args) {
    Scanner scnr = new Scanner(System.in);
    int n;
    n = scnr.nextInt();

    System.out.print(n + "\t");
    int count = 1;

    while (n > 1) {
        if (n % 2 == 0) {
            n = n * 1 / 2;
        } else {
            n = 3 * n + 1;
        }

        System.out.print(n + "\t");
        count++;

        if (count % 10 == 0) {
            System.out.print("\n");
        }

    }

}

这是我想出的,我是 java 的新手,所以这可能是我想得太多了,任何想法都会受到赞赏。

"enter image description here" is not an image description

【问题讨论】:

  • System.out.print("\n"); -> System.out.println();
  • 我还会考虑查看 String#formatSystem.out.printf 以获取其他格式选项
  • n = n * 1 / 2可以简化为n /= 2

标签: java


【解决方案1】:

如果没有任何效果,我想你可以通过跳过第 10 次打印的选项卡来欺骗它。因此,而不是你正常的 System.out.print(n + " "); 打印尝试:

if ((count + 1) % 10 == 0) {
  System.out.print(n);
} else {
  System.out.print(n + "	");
}

而不是你的正常打印。

【讨论】:

  • 谢谢,我会试试看输出是否改变。
【解决方案2】:

我想通了,我只需要稍微更改代码的顺序并在最后制作 (n != 1) 和 System.out.print(n) 。谢谢您的帮助。

【讨论】:

    【解决方案3】:

    试试这个,更改打印条件以排除结束值的选项卡以及 n 为 1 时。

     public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        int n;
        n = scnr.nextInt();
    
        System.out.print(n + "	");
        int count = 1;
    
        while (n > 1) {
            if (n % 2 == 0) {
                n = n * 1 / 2;
            } else {
                n = 3 * n + 1;
            }
            
            count++;
            if (count % 10 == 0) {
                System.out.println(n);
            }else{
                if(n==1) {
                    System.out.print(n);
                }else{
                    System.out.print(n + "	");
                }
            }
    
    
        }
    }
    

    【讨论】:

    • 您的答案可以通过其他支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写出好的答案的信息in the help center
    • 我确实试过了,谢谢。我不断收到相同的输出错误。空格不同。
    • 修改打印条件以排除行结束值和 n 为 1 时的制表符。
    猜你喜欢
    • 2021-11-10
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2018-11-30
    相关资源
    最近更新 更多