我需要编写一个程序来生成一个新文件,其中每行文本都有一个行号,给定一个没有行号的输入文件。例如:
给定线: “16”
输出线: “1 | 16”,
行号在3个空格中右对齐,后跟|字符(在。之前有一个空格) 之后),然后是该行中的文字。
public class LineNumbers {
public static void process(File input, File output) {
Scanner scanner;
PrintWriter writer;
try {
scanner = new Scanner(input);
} catch (FileNotFoundException e) {
return;
}
try {
writer = new PrintWriter(output);
} catch (FileNotFoundException e) {
return;
}
for (int i = 1; scanner.hasNextLine(); i++) {
String s1 = scanner.nextLine();
String s2 = " " + i + " | " + s1;
writer.print(s2);
}
scanner.close();
writer.close();
}
}
这是我的代码,其中字符串s2 ==我需要的输出,但是如何将其转换为输出文件?
***** EDIT *****
这是需要运行的测试之一,其中只在文件中输入一行。但是,在测试仪中,它只在行号前面有两个空格,当我更改我的代码以匹配时,测试通过。所有其他测试人员的编写方式类似,我认为这可能导致问题
@Test
public void testOneLine() {
try {
// create file
File input = folder.newFile( "input.txt" );
File output = folder.newFile( "output.txt" );
PrintWriter write = new PrintWriter( input );
write.println( "Lorem ipsum dolor sit amet, consectetur adipiscing elit." );
write.close();
// invoke program
LineNumbers.process( input, output );
// verify file results
assertTrue ( "Output file does not exist", output.exists() );
Scanner scan = new Scanner( output );
String[] result = new String[] {
" 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit."
};
for (String expected : result) {
if (scan.hasNext()) {
String actual = scan.nextLine();
assertEquals( "Incorrect result", expected, actual );
}
else {
fail( String.format( "Unexpected end of file: expected \"%s\"", expected ));
break;
}
}
assertFalse ( "File contains more data than expected", scan.hasNext() );
scan.close();
}
catch (IOException e) {
fail( "No exception should be thrown" );
}
}
答案 0 :(得分:0)
您的行号前面有太多空格。当您被告知在三个空格中提供行号时,应将其格式化为以下示例之一:
__ 1
_22
333
总共有三个字符,包括任何空格。