尝试在单独的行上打印字符串

时间:2019-03-18 02:38:38

标签: java

在为非CS类编写项目时,遇到了一个问题。我想到的项目是一种测验,其中向用户询问一个问题,并为用户提供多种选择答案。现在,我打算将这些问题键入.txt文件,并使用文件扫描仪读取它们,并创建一系列问题,如下所示:

public static String[] questionToString(Scanner sf) {
    String temp = "";
    String[] questions = new String[Q];
    int i = 0;
    while(sf.hasNext()){
        for(int y = 0; y < 5; y++) {
        temp += sf.nextLine();
    }
    questions[i] = temp;
    i++;
    temp = "";
    return questions;
}

但是,此代码经过测试将返回以下内容:

Question 1 abcd

相对于:

Question 1
a 
b
c
d

我希望每个字符都放在自己的行上,就像第二个示例一样。 在打印字符串时该怎么做?System.out.println()

最终,我打算将它们放在DrawingPanel上,并在下面列出问题。

谢谢!

3 个答案:

答案 0 :(得分:0)

除了已经添加的行"\n"之外,还使用println()添加额外的行:

System.out.println(your_var + "\n")

答案 1 :(得分:0)

那是因为您要在字符串中添加问题行。因此,对以下行进行一些更改:

temp += sf.nextLine() + "\n";

当然,换行符取决于您正在运行的环境(\n\r\n)。

答案 2 :(得分:0)

在每个字符串之后用换行符将多个字符串附加到一个字符串中的最佳方法是使用StringBuilder。我已经使用StringBuilder重写了您的代码

  public static String[] questionToString(Scanner sf) {
   StringBuilder temp = new StringBuilder();
   String[] questions = new String[Q];
   int i = 0;
   while(sf.hasNext()){
    for(int y = 0; y < 5; y++) {
    temp.append(sf.nextLine());
    temp.append(System.lineSeparator());
    }
   questions[i] = temp.toString();
   i++;
   temp = new StringBuilder();
   return questions;

}

注意:请不要在您的字符串后附加/n,因为换行符因操作系统而异。我建议您使用System.lineSeparator(),这将在您运行代码的操作系统后附加换行符。