2015-09-27 48 views
0

我想阅读文本文档(I/O)并显示星号和星号的数字作为数字。所以“5 1 3”将显示为:for循环/打印或println格式问题

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(); 
    } 
} 
+1

答案在问题标题中。 – njzk2

+0

这工作非常感谢你!但是,我的在线系统不会将其识别为正确的,因为它希望数字按顺序排列。所以如果使用相同的数字是5,1,2,3,4,5,它需要格式化为如1,2,3,4,5 –

+0

的答案然后,您必须先阅读内容,对其进行分类,然后打印它。 – njzk2

回答

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(); 
} 
0

要开始一个新行,您需要一个“换行符”,以便显示器知道分隔行。一种方法是手动添加换行符,用“\ n”表示。

第二种方法是一次生成所有的字符串(因此您创建字符串“5 *****”而不是一次打印一个字符),然后使用“println”(或打印行)命令。

第一种方法更有效一些,并且更容易工作到现有的代码中。

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(); 
    } 
0

一个简单的方法来解决,这是通过简单的(你的榜样的外观或两个)加入System.out.println()添加的astericks后。

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

如果更改System.out.print("*")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* 
* 
*