Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何停止以不同索引打印字符串?_Java_String - Fatal编程技术网

Java 如何停止以不同索引打印字符串?

Java 如何停止以不同索引打印字符串?,java,string,Java,String,作为一个启动项目,我正在编写一个代码,可以写出圆周率的数字。代码提示输入一个int,并打印出pi的小数点,它使用预先确定的字符串。问题是每个数字都在单独的一行上,如下所示: 3 . 1 4 1 5 九, 该代码使用了一个for循环,该循环以扫描器给出的索引结束。它一次打印一个字符。我正在努力寻找一种方法,使代码分别打印pi的10位子字符串,每个子字符串在各自的行上,这意味着26位数字将按如下方式打印: 3. 1415926535 8979323846 264338 这是两套10个,第三套包含其余

作为一个启动项目,我正在编写一个代码,可以写出圆周率的数字。代码提示输入一个int,并打印出pi的小数点,它使用预先确定的字符串。问题是每个数字都在单独的一行上,如下所示:

3
.
1
4
1
5
九,

该代码使用了一个for循环,该循环以扫描器给出的索引结束。它一次打印一个字符。我正在努力寻找一种方法,使代码分别打印pi的10位子字符串,每个子字符串在各自的行上,这意味着26位数字将按如下方式打印:

3.
1415926535
8979323846
264338

这是两套10个,第三套包含其余6个。我正在努力将字符串打印分成十组,并且仍然在给定索引处停止打印,即使该索引不是十的倍数。此外,旧代码中的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");
            }
        }
    }
}
import java.util.Scanner;
公共类撰稿人{
公共静态void main(字符串[]args){
最终字符串pi=“3.141592653589793238462643383279502884197169399375105820974944592307816406286208986280348253421170679”;
扫描仪扫描仪=新扫描仪(System.in);
System.out.println(“您希望看到圆周率的小数位数是多少?\n输入一个小于或等于100的整数”);
int stopAt=theScanner.nextInt();
字符当前字符;
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;
//导致代码在开始时忽略“3.”。
stopAt=stopAt+2;
for(int-loopNum=0;loopNum
尝试使用
System.out.print
而不是
System.out.println
以下使用Math.PI创建双PI的字符串表示形式。然后,我们使用string#indexOf确定小数点在该字符串中的位置。然后,我们请求使用扫描仪查看的小数位数。假设输入是一个非负整数,我们尝试使用初始索引“.”和t查找字符串PI的子字符串
//constants
int DIGITS_PER_LINE = 10; //your number of digits per line
int DIGITS_OFFSET = 2; //always 2, because 0 = '3' and 1 = '.'
String pi = /* your PI string */;

//input
int decimals = 42; //for example, from the user
//We can calculate the number of lines we need from the start
int lines = decimals / DIGITS_PER_LINE; //4, to start
lines += (decimals % DIGITS_PER_LINE > 0) ? 1 : 0; //5, add a line for remainders
System.out.print("3");
System.out.println(decimals > 0 ? "." : "");
for (int line = 0; line < lines; line++) {
    int offset = line * DIGITS_PER_LINE; //line -> result, 0 -> 0, 1 -> 10, 2 -> 20, etc
    int digitsLeft = decimals - offset; //0 -> 42, 1 -> 32, ... , 4 -> 2
    int toPrint = digitsLeft % DIGITS_PER_LINE; //up to the requested digit amount
    for (int i = 0; i < toPrint; i++) {
        System.out.print(pi.charAt(offset + i));
    }
    System.out.println();
}