如何根据整数n删除行?

时间:2013-11-20 15:18:19

标签: java loops while-loop

我正在尝试替换文件,但根据用户输入保持一些行完好无损。 (详情见下面代码)

public class RemoveLines {
public static void main(String[] args) 
        throws FileNotFoundException {

    // prompt for input file name
    Scanner console = new Scanner(System.in); 
    System.out.print("Type first file name to use: ");
    String filename1 = console.nextLine();
    System.out.print("Type second file name to use: ");
    String filename2 = console.nextLine();
    System.out.println("enter an integer: ");
    int n = console.nextInt();
    Scanner input = new Scanner(new File(filename1));   //put the first file as input
    PrintStream output = new PrintStream(new File(filename2)); //put the second file as output
    int count =0;
    while(input.hasNextLine()){
        count ++;
        while(n<=count){
            output.println(); // this is where i don't know what to place

        }
    }
}   
}

程序应提示用户输入2个文件名和一个整数n。 它应该创建第二个文件,其中包含第一个文件的前n行,同时保持其完整。如果第一个文件包含少于n行,则第二个文件将包含第一个文件的所有行。 我已经开始编写while循环,但我不确定我应该包含什么命令才能获得所需的输出。 谢谢。

3 个答案:

答案 0 :(得分:0)

while(input.hasNextLine()){
   count ++;
   while(n<=count){
      output.println(input.nextLine()); 
   } else {
      break;
   }
}

您还应该检查输入文件是否存在。 而且你应该关闭你的输入和输出。在这个简单的案例中我无所谓,但是你应该在更复杂的应用程序中做些什么。

答案 1 :(得分:0)

您应该打开PrintStream,并将append选项设置为true(默认情况下为false) -

PrintStream output = new PrintStream(new File(filename2, **true**));

然后你可以做类似下面的事情 -

String inputLine = scanner.readLine(); 
output.append(inputLine);

答案 2 :(得分:0)

尝试使用以下代码:

 int count = 0;
    while (count < n) {
        if (input.hasNextLine()) {
            output.println(input.nextLine()); // this is where i don't know what to place
            count++;
        }else
        {
            break;
        }

    }

    /**
     * Close scanner 
     */

    input.close();
    console.close();
    output.close();