找不到符号方法hasNext

时间:2014-11-06 17:06:56

标签: java

我在编译时遇到问题,因为它显示无法找到符号 - 方法在下一行中有下一行

 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");
    }
}

2 个答案:

答案 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()