0

大家好,我对编码很陌生,因为我一个月前才开始上学。我们的项目是构建一个游戏。对于我的游戏,我有从文本文件中读取到数组中的问题。我用 \t 和 \n 更改了选项卡和新行来格式化它。当我将代码复制粘贴到 System.out.println 中时,它可以完美运行。但是,当我尝试使用文本文件执行此操作时,它的输出与我使用 \t 和 \n 输入的完全一样,请提供任何帮助:)

示例文本文件(只有一行)

通常如何描述文字游戏?\n\t\tA) Pan\t\t \t\t\tB) Pin\n\t\tC) Pen\t\t \t\t\tD) Pun

输出 if put into print 语句

通常如何描述文字游戏?
A) 盘 B) 针
C) 笔 D) 双关

列出代码的输出

通常如何描述文字游戏?\n\t\tA) Pan\t\t \t\t\tB) Pin\n\t\tC) Pen\t\t \t\t\tD) Pun

**import java.util.Scanner;
import java.io.*;
public class ImportFile {
    public static void main(String[] args) throws Exception{
        Scanner easyfile = new Scanner(new File("src/EasyQuestions.txt"));
        System.out.println(easyfile.nextLine());
    }
}**
4

3 回答 3

1

\n 和 \t 是 Java 字符串中使用的转义序列,分别表示换行符和制表符。

但是,当您从具有这些字符序列的文件中读取文本时,您不是在读取转义序列,您实际上是在读取两个字符,前一种情况是“\”和“n”,而“\”和“t”在后者。

我认为您想撤消所做的操作,并从文件中删除“\n”和“\t”,然后将实际的换行符和制表符放回去。

于 2012-05-04T03:09:12.730 回答
0

\t并且\n是必要的转义序列,因为您不能在一行 Java 代码中间有一个新行。

// This doesn't work in Java.
String s = "One line
            the next line";

但是您读入的文件可以毫无问题地包含这些字符:

One line
        the next line

因此,当您从文件中读取文本时,Java 不会尝试转义它找到的字符:它假定当文件表示\t它的意思\t而不是Tab.

如果你\t用制表符和\n换行符替换,你必须自己做。String.replace()方法是一个很好的起点。

于 2012-05-04T03:09:26.100 回答
0

正如我在评论中已经提到的,Java 从文本中读取像“\t”这样的文本作为“\t”。考虑使用String#replace(...)将“\t”交换回“\t”

于 2012-05-04T03:09:45.327 回答