Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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 如何在同一行上打印两个for循环的结果_Java_Android_String_Formatting - Fatal编程技术网

Java 如何在同一行上打印两个for循环的结果

Java 如何在同一行上打印两个for循环的结果,java,android,string,formatting,Java,Android,String,Formatting,我试图让代码运行,以便输出如下所示 91-100 | [][][][][][][][][] 81- 90 | [][][][][] 71- 80 | [][][][][][][][][][] 61- 70 | [][] 51- 60 | [] 41- 50 | [][] 31- 40 | 21- 30 | 11- 20 | 1- 10 | [][][] 91-100 | [][][][][][][][][] 81- 90 | [][][][][] 71- 80 | [][][

我试图让代码运行,以便输出如下所示

91-100 | [][][][][][][][][] 81- 90 | [][][][][] 71- 80 | [][][][][][][][][][] 61- 70 | [][] 51- 60 | [] 41- 50 | [][] 31- 40 | 21- 30 | 11- 20 | 1- 10 | [][][] 91-100 | [][][][][][][][][] 81- 90 | [][][][][] 71- 80 | [][][][][][][][][][] 61- 70 | [][] 51- 60 | [] 41- 50 | [][] 31- 40 | 21- 30 | 11- 20 | 1- 10 | [][][] 但是现在我的输出是这样的

91-100 | [][][][][][][][][]81- 90 | [][][][][]71- 80 | [][][][][][][][][][]61- 70 | [][]51- 60 | []41- 50 | [][]31- 40 | 21- 30 | 11- 20 | 1- 10 | [][][] 91-100 | [][][][][][][][][]81- 90 | [][][][][]71- 80 | [][][][][][][][][][]61- 70 | [][]51- 60 | []41- 50 | [][]31- 40 | 21- 30 | 11- 20 | 1- 10 | [][][] 这是我的密码:

 int[] buckets = new int[10];
 while(scan.hasNextLine()){            
     String line = scan.nextLine();
     String[] array = line.split(separator);
     String grade = array[1];
     int number =  Integer.parseInt(grade.trim());
     buckets[(number - 1)/10]++;           
 }
 for(int i = buckets.length - 1; i >= 0; i--)// RELEVANT PARTS TO QUESTION
     System.out.printf("%2d-%3d |%n", i * 10 + 1, i * 10 + 10);
     for(int j = 0; j < buckets[i]; j++){
         System.out.print("[]");
     }
 } 
int[]bucket=newint[10];
而(scan.hasNextLine()){
String line=scan.nextLine();
String[]数组=line.split(分隔符);
字符串级别=数组[1];
int number=Integer.parseInt(grade.trim());
桶[(数字-1)/10]+;
}
for(int i=bucket.length-1;i>=0;i--)//要提问的相关部分
System.out.printf(“%2d-%3d |%n”,i*10+1,i*10+10);
对于(int j=0;j
我似乎正在将
[]
打印到下一行,但我似乎不知道如何将
[]
放在上一行。我曾尝试使用
printf(%d%d |%s%n)
,但与我的尝试相比,效果不太好,只会产生更多问题。
是否仍有必要将
[]
移回一行?

由于
printf
在输入
%n
时会打印新行,因此我建议使用类似的方法(将
%n
替换为空格,在循环后添加
println
):

for(int i=bucket.length-1;i>=0;i--){
系统输出打印(“%2d-%3d |”,i*10+1,i*10+10);
对于(int j=0;j

println
语句将在您想要的位置为您提供换行符。

您可以在
printf
语句之前创建bucket字符串,然后像下面一样立即打印字符串

 for (int i = buckets.length - 1; i >= 0; i--) {        
     String bucketsString = "";    

     for(int j = 0; j < buckets[i]; j++) 
         bucketsString = bucketsString.concat("[]");

     System.out.printf("%2d-%3d | %s %n", i * 10 + 1, i * 10 + 10, bucketsString);
 } 
for(inti=bucket.length-1;i>=0;i--){
字符串bucketsString=“”;
对于(int j=0;j
System.out.printf()
System.out.println()
在末尾添加新行。因此,只需使用
System.out.print()
并在一行末尾使用
System.out.println()

for(int i=bucket.length-1;i>=0;i--)//要提问的相关部分
系统输出打印(“%2d-%3d |”,i*10+1,i*10+10);
对于(int j=0;j
看看你是否能想出一种方法,在一个print语句中打印出每一行。我试过这样做,但我的助教说很难正确格式化,我应该使用2 for loopsI插入println语句,这使代码看起来更整洁,但它只是将括号完全放在一行上,而不是像我尝试做的那样并排放在数字后面。只要
println
在循环之后,它就不应该将
[]
移动到下一行,你是否将它放在循环中并得到一个垂直列
[]
?别忘了将
%n
更改为“我的荣幸”,我应该在原始答案xD的非代码部分指定这两个更改。此外,我还建议查看Michael Lihs的答案,并选择一个适合您的答案。我喜欢这样。除了看起来更好之外,还有一大堆
concat
s比
print
s快吗?不是100%确定,但是由于
print
需要以某种方式与系统交互,我想
concat
应该更快,因为它是“Java内部的”。但是我不知道
print
实际上是如何在Java中实现的,所以这只是一个猜测
 for (int i = buckets.length - 1; i >= 0; i--) {        
     String bucketsString = "";    

     for(int j = 0; j < buckets[i]; j++) 
         bucketsString = bucketsString.concat("[]");

     System.out.printf("%2d-%3d | %s %n", i * 10 + 1, i * 10 + 10, bucketsString);
 } 
for(int i = buckets.length - 1; i >= 0; i--)// RELEVANT PARTS TO QUESTION
    System.out.print("%2d-%3d |", i * 10 + 1, i * 10 + 10);
    for(int j = 0; j < buckets[i]; j++){
        System.out.print("[]");
    }
    System.out.println();
}