【问题标题】:How can I generate the squares of the digits of an integer如何生成整数数字的平方
【发布时间】:2020-08-31 11:41:07
【问题描述】:

我正在尝试编写一个接受输入的命令行程序。如果输入是整数,它会将数字的每个数字平方并将它们连接起来,但如果输入不是整数,那么它会要求用户输入一个数字。但是输出是错误的。请检查代码。

package com.company;
import java.util.*;

public class ExerciseB {
  public static void main (String[] args) {
    while (true) {
        System.out.println("Enter a digit or 'quit' to quit: ");
        Scanner userInput = new Scanner(System.in);
        if (userInput.hasNextInt()) {
            int intInput = userInput.nextInt();
            int i;
            int intCharSquare;
            ArrayList<Integer> valueCharSquare = new ArrayList<>();

            //Generating the square of each character of the inputted integer and adding it to the valueCharSquare ArrayList
            String stringOfIntInput= String.valueOf(intInput);
            for (i = 0; i <= stringOfIntInput.length() - 1; i++) {
                intCharSquare = (int) Math.pow((int) stringOfIntInput.charAt(i),2);
                valueCharSquare.add(intCharSquare);
            }
                // Storing the first value of the valueCharSquare ArrayList into a variable
                int result = valueCharSquare.get(0);

                //Converting the value of result into a string
                String.valueOf(result);

                /* Obtaining the other values of the valueCharSquare ArrayList
                 * and storing them into otherResult variable
                 * then converting otherResult into a string
                 * then concatenating the values of result and otherResults
                 */
            for (i = 1; i <= valueCharSquare.size() - 1; i++) {
                int otherResults = valueCharSquare.get(i);
                String.valueOf(otherResults);
                result = result + otherResults;
            }
                //printing out new value of result
                System.out.println(result);

                // This happens if the user input is a string
        } else if (userInput.hasNext()) {
            String stringInput = userInput.nextLine();
            if (stringInput.equals("quit")) {
                break;
            } else {
                continue;
            }
        }
    }
  }

}

【问题讨论】:

  • 请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。
  • 您能解释一下...输出错误的确切含义吗?您可以为您的问题添加输入以及期望和实际输出吗?
  • 显示“实际”和“预期”输出将使问题更加清晰

标签: java string integer java.util.scanner


【解决方案1】:

您应该编写一个单独的方法来对整数的数字进行平方,例如像这样:

static String squareDigits(int number) {
    String numberString = Integer.toString(number);
    StringBuilder buf = new StringBuilder();
    if (number < 0)
        buf.append('-');
    for (int i = (number < 0 ? 1 : 0); i < numberString.length(); i++) {
        int digit = Character.digit(numberString.charAt(i), 10);
        buf.append(digit * digit);
    }
    return buf.toString();
}

然后您可以独立于您的用户输入/输出逻辑对其进行测试:

System.out.println(squareDigits(13579));       // prints: 19254981
System.out.println(squareDigits(-2468));       // prints: -4163664
System.out.println(squareDigits(0));           // prints: 0
System.out.println(squareDigits(1999999999));  // prints: 1818181818181818181

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多