【问题标题】:Print each digit of a number on a new line in Java在Java中的新行上打印数字的每个数字
【发布时间】:2016-02-14 13:15:20
【问题描述】:

我编写了以下代码,该程序的目的是让用户输入一个数字,即 123,程序将垂直输出为 1 2 3。不管我做什么,我的程序都是 3 2 1。我需要在这个程序中使用一个循环,我似乎无法弄清楚。

import java.util.Scanner;

public class DigitsDisplay {
    public static Scanner console = new Scanner(System.in);

    public static void main(String[] args) {
        int a = getInt("Give a non-negative integer: ");
        double backwards = 0;
        int reverse;
        int numOfDigits = numOfDigits(a);
        double place = Math.pow(10, numOfDigits);

        while (a != 0) {
            reverse = a % 10;
            backwards = backwards + place * reverse;
            System.out.println(reverse);
            a = a / 10;
        }
    }

    public static int getInt(String prompt) {
        int input;

        System.out.print(prompt);
        input = console.nextInt();

        return input;
    }

    public static int numOfDigits(int a) {
        int numOfD = (int)(Math.log10(a)) + 1;

        return numOfD;
    }

}

【问题讨论】:

    标签: java loops methods while-loop


    【解决方案1】:

    反转反转值

    您的程序旨在反转数字。它确实如此。如果您想将它们反转回来,我建议您将它们附加到 StringBuilder 然后 reverse 那个。喜欢,

    StringBuilder sb = new StringBuilder();
    while (a != 0) {
        reverse = a % 10;
        sb.append(reverse).append(System.lineSeparator());
        backwards = backwards + place * reverse;
        a = a / 10;
    }
    System.out.print(sb.reverse());
    

    使用正则表达式

    您的算法可以通过使用String.replaceAll(String, String)regular expression 来简化算法,该regular expression 匹配和分组a 的所有数字,然后将每个数字替换为自身加上一个新行。比如,

    int a = getInt("Give a non-negative integer: ");
    System.out.println(String.valueOf(a).replaceAll("(\\d)",
                "$1" + System.lineSeparator()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多