我在编译时遇到问题,因为它显示无法找到符号 - 方法在下一行中有下一行
while(x.hasNext())
这是一个程序,用于将学生的数据存储在文件中,并通过搜索名称显示该数据。
import java.util.*;
import java.io.File;
import java.lang.*;
import java.io.*;
public class beta1_1
{
private Formatter x;
Scanner sc=new Scanner(System.in);
int ctr=0;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
void main()throws IOException
{
System.out.println("1) Add new Information");
System.out.println("2) View Student Information");
System.out.println("Select Your Option");
int op=sc.nextInt();
if(op==1)
{
addInformation();
}
if(op==2)
{
viewInformation();
}
}
void addInformation()throws IOException
{
System.out.println("Number of students to be entered");
int n=sc.nextInt();
for(int i=0;i<n;i++)
{
System.out.println("Enter name: ");
String nm=br.readLine();
nm=nm.toUpperCase();
System.out.println("Enter class: ");
int c=sc.nextInt();
System.out.println("Enter section: ");
char s=sc.next().charAt(0);
s=Character.toUpperCase(s);
System.out.println("Enter address: ");
String a=br.readLine();
a=a.toUpperCase();
try{
x=new Formatter("save.txt");
}
catch(Exception e)
{
System.out.println("Error");
}
x.format("%s %s %s %s",nm,c,s,a,"/n");
x.close();
}
System.out.println("Do you want to continue? ");
System.out.println("Enter Y for yes or N for no");
char d=sc.next().charAt(0);
d=Character.toUpperCase(d);
if (d=='N')
{
exit();
}
else
if (d=='Y')
{
viewInformation();
}
}
void viewInformation()throws IOException
{
System.out.println("Select method of search: ");
System.out.println("1)By Name");
System.out.println("2)By Class");
int ch=sc.nextInt();
if(ch==1)
{
System.out.println("Enter Name: ");
String sh=br.readLine();
sh=sh.toUpperCase();
int i=0;
while(x.hasNext())
{
String a=x.next();
String b=x.next();
String c=x.next();
String d=x.Next();
if(a==sh)
{
System.out.println("%s %s %s %s",a,b,c,d);
ctr++;
}
}
}
}
void exit()
{
System.out.println("Thank You for Using");
}
}
答案 0 :(得分:1)
您无法使用Formatter类执行此操作,而是尝试使用类似扫描程序:
String file="save.txt";
Scanner sc2 = null;
try {
sc2 = new Scanner(new File(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (sc2.hasNextLine()) {
Scanner sc3 = new Scanner(sc2.nextLine());
String a=sc3.next();
String b=sc3.next();
String c=sc3.next();
String d=sc3.next();
if (a.equals(sh)){ //have to use the .equals to compare strings
System.out.println(a+" "+b+" "+c+" "+d);
ctr++;
}
}
答案 1 :(得分:0)
您已经创建了Formatter类型的x
如果Formatter
是java util包中的类,那么它没有任何hasNext
方法,这就是为什么你无法使用它..
如果您要创建任何名为Formatter
的类并且其中包含任何方法hasNext
,那么您可以在代码中导入该类以使用它....
hasNext()
方法属于类
java.util.Scanner.hasNext()
然后你必须创建一个类型为Scanner的x并在其上使用hasNext()