我想读取文本文档(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();
}
}
答案 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*
*
*