检查.java文件中打开的大括号数

检查.java文件中打开的大括号数,java,Java,我必须制作一个程序来读取一个.java文件,并检查打开的大括号数是否与关闭的大括号数相同,它必须是堆栈。这就是我所做的,但很明显我正在使用扫描器并在那里介绍程序,它不一定是这样的,它必须是一个.java文件 public class Llaves1 { public static int numPila; private int t = -1; private char[] pila; Llaves1(int size){ this.pila = ne

我必须制作一个程序来读取一个.java文件,并检查打开的大括号数是否与关闭的大括号数相同,它必须是堆栈。这就是我所做的,但很明显我正在使用扫描器并在那里介绍程序,它不一定是这样的,它必须是一个.java文件

public class Llaves1 {

    public static int numPila;
    private int t = -1;
    private char[] pila;  Llaves1(int size){
        this.pila = new char[size];
        numPila++;
    } 

       public int size(){
        return (t+1);
    }

    public boolean isEmpty(){
        if(t==-1)
            return true;
        else
            return false;
    }

    public  void push(char x){
        if(this.size()== this.pila.length)
        {
            System.out.println("Pile is already full.");
        }
         else {
        this.pila[++t]=x;
        }
    }

    public char pop(){
        if(isEmpty()){
            System.out.println("Empty Pile.");
        }
        return pila[t--];
    }

    public char top(){
        if(isEmpty()){
            System.out.println("Empty pile.");
        }
        return pila[t];
    }

    public static void main(String[] args) {

        Scanner teclado = new Scanner(System.in);
        String cadena= teclado.nextLine();

        Llaves1 a= new Llaves1(cadena.length());
        for(int i=0; i<cadena.length();i++){
           char temp = cadena.charAt(i);
           a.push(temp);
        }

        if(a.isEmpty())
            System.out.println("Is empty.");
        int numC=0;
        int numA=0;

        for(int i=0; i<cadena.length(); i++){
            if(a.top()=='}')
               numC++;
            if(a.top()=='{')
               numA++;
            a.pop();
        }
        if(numA!=numC)
            System.out.println("You have to close curly braces");
        else 
            System.out.println("all curly braces have been closed.");
    }

}

如果要读取文件,请更改此选项

Scanner teclado = new Scanner(System.in);

您的扫描仪将从该文件而不是从System.in读取;一个更有用的方法可能是

Scanner teclado = new Scanner(new File(args[0]));

如果您需要将文件作为参数传入。

如果您有//{}或类似字符的'}'之类的注释,会发生什么情况?有标准的API将文件作为流打开,这与扫描仪提供的内容非常类似。有很多这样做的例子,比如用户有没有选择文件的方法?@Chanell是的,选项2,并将文件作为参数传递-java Llaves1 myFile
Scanner teclado = new Scanner(new File(args[0]));