2015-09-27 49 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* 
* 
*