如何在一行中获得一定数量的字符?

ws51t4hk  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(329)

在我编写的程序中,如果用户输入的整数大于10,我希望每行打印10个字符。当我运行代码时,第一行打印11个数字,而第二行打印9个。我怎样才能同时打印10?下面是我使用的代码:double s=0;

double s = 0;
    String str = "";

    double[] arr1 = new double[userInput];

    for (int i = 0; i<size; i++) {
        arr1[i] = Math.random()*100;
    }  //Generates random array (size of array depends on user input)

    for (int i = 0; i<arr1.length;i++) {
        s = arr1[i];
        s = Math.round(s * 10.0) / 10.0;
        str += s + " ";
        if (i%10 == 0 && i!=0) {
            str += "\n";
        }
    }
pw9qyyiw

pw9qyyiw1#

可以通过以下几种方式解决此问题:
新行的追加应该移到循环的开头

for (int i = 0; i < arr1.length; i++) {
    if (i % 10 == 0 && i !=0) {
        str += "\n";
    }

    s = arr1[i];
    s = Math.round(s * 10.0) / 10.0;
    str += s + " ";
}

从1运行循环并将索引固定为1
此外,使用 StringBuilder 最好连接多个字符串:

StringBuilder str = new StringBuilder();

for (int c = 1; c <= arr1.length; c++) {
    s = arr1[c - 1];
    s = Math.round(s * 10.0) / 10.0;
    str.append(s < 10? " " : "").append(s).append("  ");

    if (c % 10 == 0) {
        str.append('\n');
    }
}
System.out.println(str);

42个元件的测试输出:

58.3  52.2  48.9  41.4  78.3  58.9  93.2  44.8  66.3  75.5  
30.0  47.6  43.7  76.3   1.9  70.1  39.7  37.7  14.0   7.1  
41.8  31.8  84.9   2.2  72.7  42.5  48.8   5.8  95.0  83.0  
77.9  43.7  69.3  62.0  10.7  43.9  21.5  40.5  36.4  65.4  
 6.8  43.9
f1tvaqid

f1tvaqid2#

我希望我没有误读你的问题,但这是一个(有点简化的版本)你的代码,这正是我认为你想要的。
你需要调整这一点,然后你的具体需要,但这是基本要求。如果用户输入的数字大于10,则数组大小的每行打印10个字符。

double userInput = 10;

//user input must be > 10 to continue
if (userInput < 10)
return;

//i explicitely defined my array for simplifications
int arr1[] = {1,2,3,4,5,6,7,8,9,10};

//i go through each of the array positions
 for (int i = 0; i<arr1.length;i++) 
 {
   //for each position i print the first 10 items of the array in the same line
    for (int j = 0; j < 10; j++)
      {
        System.out.print (arr1[j] + " ");
      }
      System.out.println ("\n");
}

输出:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

相关问题