我必须创建一个EchoDouble类,它扩展了Echo类,它将文本文件回显到控制台。
该文本文件的内容是
Nature's first green is gold,
Her hardest hue to hold.
Her early leaf's a flower;
But only so an hour.
但我正在尝试编辑EchoDouble类中的processLine方法,以便它将像这样双回发回文本文件
Nature's first green is gold,
Her hardest hue to hold.
Her early leaf's a flower;
But only so an hour.
回声等级
import java.util.Scanner;
import java.io.*;
public class Echo{
String fileName; // external file name
Scanner scan; // Scanner object for reading from external file
public Echo(String f) throws IOException
{
fileName = f;
scan = new Scanner(new FileReader(fileName));
}
// reads lines, hands each to processLine
public void readLines(){
while(scan.hasNext()){
processLine(scan.nextLine());
}
scan.close();
}
// does the real processing work
public void processLine(String line){
System.out.println(line);
}
}
EchoDouble Class
import java.io.*;
public class EchoDouble extends Echo
{
public EchoDouble (String datafile) throws IOException
{
super(datafile);
}
// Prints the given line and inserts a blank line
// Overrides the processLine method in Echo class
public void processLine(String line)
{
/* **code here** */
}
}
我是java中的回声和扫描程序的新手,我坚持这个问题。如果有人能就如何解决这个问题给我任何建议,我们将不胜感激!
答案 0 :(得分:2)
这个怎么样:
@Override
public void processLine(String line){
System.out.println(line);
System.out.println();
}
答案 1 :(得分:2)
最简单的事情是:
public void processLine(String line) {
System.out.println(line);
System.out.println();
}
但是这会在最后给你一个额外的空行。可替代地,
public void processLine(String line) {
System.out.println();
System.out.println(line);
}
会在开头给你一个额外的空行。所以你需要一个关于它是否是第一行的概念。
您可以将这些知识放在processLine
:
private boolean printedAnythingYet = false;
public void processLine(String line) {
if (printedAnythingYet) {
System.out.println();
}
System.out.println(line);
printedAnythingYet = true;
}
或在readLines
:
public void readLines() {
boolean isFirstLine = true;
while (scan.hasNext()) {
processLine(scan.nextLine(), isFirstLine);
isFirstLine = false;
}
scan.close();
}
public void processLine(String line, boolean isFirstLine) {
if (!isFirstLine) {
System.out.println();
}
System.out.println(line);
}
我不确定哪些我更喜欢。说实话,我认为processLine
不应该是public
。
答案 2 :(得分:1)
执行:
public void processLine(String line){
System.out.println("\n" + line);
}
\ n是创建新行的原因,然后它回应。