我在Main类中输入k和choice(整数)。然后尝试在count类中输入title_name。但是,我无法输入title_name。
//主要课程
package com.iiitd.ap.lab6;
import java.io.IOException;
import java.util.Scanner;
public class Main {
static int k;
static int option;
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
k=in.nextInt();
option=in.nextInt();
in.close();
System.out.println(k+" "+option);
count t=new count(k,option);
t.count_print();
}
}
// count class
package com.iiitd.ap.lab6;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class count {
static int k;
static int option;
count(int k, int option)
{
count.k= k;
count.option= option;
}
int decide_file_1() throws IOException
{
String title_name="";
Scanner in=new Scanner(System.in);
title_name=in.next();
System.out.println("ttt");
in.close();
for(int i=1;i<=20;++i){
FileInputStream fs= new FileInputStream("/home/tarun/Downloads/Lab6/Papers/paper"+i+".txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
System.out.println(title_name+" "+br.readLine());
if(title_name.equals(br.readLine()))
return i;
}
return 0;
}
int count_print() throws IOException
{
if(option==1)
{
System.out.printf("decide_file=%d",decide_file_1());
}
return 0;
}
}
非常感谢任何形式的帮助。
答案 0 :(得分:2)
您正在通过调用System.in
关闭标准输入流(in.close()
。
如果此扫描程序尚未关闭,则如果其底层可读也实现了Closeable接口,则将调用可读的close方法。如果此扫描程序已关闭,则调用此方法将不会效果。
这意味着它将调用输入流的 close()方法,关闭流并断开读取控制台与java程序之间的连接。
因此,您不能再在程序中使用System.in
流(如果您使用的是新的Scanner()对象则无关紧要。)
答案 1 :(得分:0)
您正在阅读该行两次:
System.out.println(title_name+" "+br.readLine());
if(title_name.equals(br.readLine()))
return i;
在打印和比较之前存储该值。读完线后,读者就会前进。因此,第二个readLine()调用将获取流中的下一行。
String title = br.readLine();
System.out.println(title_name+" "+title);
if(title_name.equals(title))
return i;