如何停止在可变索引处打印字符串?

问题描述 投票:1回答:3

作为一个入门项目,我正在编写一个写出pi位数的代码。该代码提示输入一个int,并打印出使用预定字符串的pi的许多小数位。问题在于每个单独的数字都位于单独的行上,如下所示:

3。1个41个59

该代码使用了一个for循环,该循环以扫描仪给定的索引结尾。它一次打印一个字符。我正在努力寻找一种方法来使代码分别打印pi的十位数子串,每个子串都在自己的行上,这意味着将像这样打印26位数:

3。14159265358979323846264338

这是两组,每组十个,第三组包含其余六个。我正在努力将字符串打印分为十组,即使给定索引不是十的倍数,它也仍然在给定索引处停止打印。另外,旧代码中的for

循环用于数字计数器,因此我想保留它。在字符串中加上“ / n”以使空格中断计数系统,因为这些字符也会被计数和打印,从而使该选项无效。到目前为止,我还没有其他想法可以解决此问题。如果您知道用这种方式打印的方法,请告诉我。我的代码在下面,请随时复制并进行实验,如果您决定在某个地方使用它,请相信我。
import java.util.Scanner;
public class PiWriter {
    public static void main(String[] args) {
        final String pi = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
        Scanner theScanner = new Scanner(System.in);
        System.out.println("How many decimal places of pi do you want to see?\nEnter an integer less than or equal to 100");
        int stopAt = theScanner.nextInt();
        char currentChar;
        int num0 = 0;
        int num1 = 0;
        int num2 = 0;
        int num3 = 0;
        int num4 = 0;
        int num5 = 0;
        int num6 = 0;
        int num7 = 0;
        int num8 = 0;
        int num9 = 0;
        //Causes the code to ignore the "3." at the start.
        stopAt = stopAt + 2;
        for (int loopNum = 0; loopNum < stopAt; loopNum++) {
            System.out.println(pi.charAt(loopNum));
            currentChar = pi.charAt(loopNum);
            //This counts how many times a digit occurs.
            switch (currentChar) {
                case '0':
                    num0++;
                    break;
                case '1':
                    num1++;
                    break;
                case '2':
                    num2++;
                    break;
                case '3':
                    num3++;
                case '4':
                    num4++;
                    break;
                case '5':
                    num5++;
                    break;
                case '6':
                    num6++;
                    break;
                case '7':
                    num7++;
                    break;
                case '8':
                    num8++;
                    break;
                case '9':
                    num9++;
                    break;
                default:
                    break;
            }
        }
        //Further ignores "3."
        num3--;
        //Corrects number for message.
        stopAt = stopAt - 2;
        System.out.println("Successfully printed first " + stopAt + " decimal places of pi.\nShow digit count?\nY/N");
        theScanner.nextLine();
        char response = theScanner.nextLine().charAt(0);
        if (response == 'y'||response == 'Y') {
            //This displays how many times each digit occurred.
            if (num0 == 1) {
                System.out.println("1 zero");
            }
            else {
                System.out.println(num0 + " zeroes");
            }
            if (num1 == 1) {
                System.out.println("1 one");
            }
            else {
                System.out.println(num1 + " ones");
            }
            if (num2 == 1) {
                System.out.println("1 two");
            }
            else {
                System.out.println(num2 + " twos");
            }
            if (num3 == 1) {
                System.out.println("1 three");
            }
            else {
                System.out.println(num3 + " threes");
            }
            if (num4 == 1) {
                System.out.println("1 four");
            }
            else {
                System.out.println(num4 + " fours");
            }
            if (num5 == 1) {
                System.out.println("1 five");
            }
            else {
                System.out.println(num5 + " fives");
            }
            if (num6 == 1) {
                System.out.println("1 six");
            }
            else {
                System.out.println(num6 + " sixes");
            }
            if (num7 == 1) {
                System.out.println("1 seven");
            }
            else {
                System.out.println(num7 + " sevens");
            }
            if (num8 == 1) {
                System.out.println("1 eight");
            }
            else {
                System.out.println(num8 + " eights");
            }
            if (num9 == 1) {
                System.out.println("1 nine");
            }
            else {
                System.out.println(num9 + " nines");
            }
        }
    }
}

作为一个入门项目,我正在编写一个写出pi位数的代码。该代码提示输入一个int,并打印出使用预定字符串的pi的许多小数位。问题是...

java string
3个回答
0
投票

您可以通过做一些数学运算,几个基本循环以及使用printprintln来避免计算逻辑。首先,我将在此处定义使用的变量:


1
投票

尝试使用System.out.print代替System.out.println


0
投票

以下内容使用Math.PI创建Double PI的String表示形式。然后,我们使用String#indexOf确定小数点在该字符串中的位置。然后,我们要求使用Scanner查看小数位数。假设输入是一个非负整数,我们尝试使用初始索引“”查找字符串PI的子字符串。和其余数字。

© www.soinside.com 2019 - 2024. All rights reserved.