用于循环/打印或println格式化问题

时间:2015-09-27 20:37:38

标签: java

我想读取文本文档(I / O)并显示星号的数量和数量作为数字。所以“5 1 3”将显示为:

  

5 *****

     

1 *

     

3 ***

我的代码将输出显示为“5 ***** 1 * 3 ***”。我已经尝试了很多东西,但无法弄明白。

我的代码:

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class HWK1B {
    public static void main(String[] args) throws IOException {
        File file = new File("data.txt");
        Scanner inFile = new Scanner(file);
        while (inFile.hasNext()) {
            int num;
            num = inFile.nextInt();
            System.out.print(num);
            for (int i = 0; i < num; i++) {
                System.out.print("*");
            }
        }
        inFile.close();
    }
}

4 个答案:

答案 0 :(得分:2)

在主循环的末尾添加System.out.println(),它将转到下一行。

while(inFile.hasNext())
{
    int num; 
    num = inFile.nextInt(); 
    System.out.print(num);
    for(int i=0; i < num; i++) 
    { 
        System.out.print("*"); 
    } 
    System.out.println();
}

答案 1 :(得分:0)

要开始一个新行,您需要一个&#34;换行符&#34;这样显示器就知道将线分开了。一种方法是手动添加换行符,用#34; \ n&#34;表示。

第二种方法是一次性生成你的字符串(所以你构建字符串&#34; 5 *****&#34;而不是一次打印一个字符),然后使用&#34; println&#34; (或打印行)命令。

第一种方法更有效,也更容易使用现有代码。

答案 2 :(得分:0)

你永远不会进行换行,所以控制台会连续打印出来。

要插入换行符,您可以使用例如System.out.println()方法。 此代码应在每个数字后为您提供2个换行符:

public static void main(String[] args) throws FileNotFoundException {
        File file = new File("data.txt");
        Scanner inFile = new Scanner(file);
        while(inFile.hasNext()) {
            int num;
            num = inFile.nextInt();
            System.out.print(num);
            for(int i=0; i < num; i++) {
               System.out.print("*");
            }
            System.out.println();
            System.out.println();
        }
        inFile.close();
    }

答案 3 :(得分:0)

解决此问题的一种简单方法是在添加星号后添加System.out.println()(或者通过示例的外观添加两个)。

import java.io.*;
import java.util.Scanner;

public class HWK1B
{
    public static void main(String[] args) throws IOException
    {
       File file = new File("data.txt"); 
       Scanner inFile = new Scanner(file); 
       while(inFile.hasNext())
       {
          int num; 
          num = inFile.nextInt(); 
          System.out.print(num);
          for(int i=0; i < num; i++) 
          { 
             System.out.print("*"); 
          } 
          System.out.println();
          System.out.println();
       }
       inFile.close(); 
    }
}

如果您将System.out.print(num)更改为System.out.println(num),则会在星号之前添加一个新行,从而产生如下示例:

5
*****1
*3***

如果您将System.out.print("*")更改为System.out.println("*"),则每次添加星号时都会添加新行,从而导致:

5*
*
*
*
*
1*3*
*
*