Java非法表达式开始,到底哪里错了?

超级小白一个,请问怎么解决,顺便想知道那些错误会导致非法表达式开始

代码如下

import java.util.Scanner;

class Information{//定义一个账号类型

String name;

float balance;

float limit;

}

public class CreditCard{//主方法,用于主要的操作

Information i=new Information();//引用账号类型
float low;  
public static void main(String[] args){
    Scanner reader=new Scanner(System.in);
    System.out.println("请输入您的姓名:");
    low=-10000f;//默认额度
    i.name=reader.next();
    System.out.println("本机提供如下服务:1.存款 2.取款 3.余额查询 4.设置信用卡账户的透支限额");
    System.out.print("请输入您需要的服务的序号:");
    while(1){//功能的实现
        int flag1=reader.nextInt;
        switch(flag){
        case 1:
            deposit(1);
            break;
        case 2:
            deposit(0);
            break;
        case 3:
            show();
            break;
        case 4:
            overdraft();
            break;
        }
        System.out.print("是否需要其他服务(1是 2否):");//询问有没有其他服务
        int flag2=reader.nextInt;
        if(flag2==1);//有需要再次循环
        else    break;//没有结束while循环
}
public static void deposit(int i){//存取功能,错误位置 
    Scanner reader=new Scanner(System.in);
    if(i){
        System.out.print("请输入存款数额:");
        float into=reader.nextFloat();
        i.balance+=into;
    }
    else{
        System.out.print("请输入取款数额:");
        float out=reader.nextFloat();
        i.balance-=out;
        if(i.balance<low){//查看取款是否超额度
            System.out.print("对不起,额度不足,请重新输入取款数额");
            deposit(0);
        }
    }
}
public static void show(){//余额查询功能
    Information i=new Information();
    System.out.println("您账户的余额为:"+i.balance);
}
public static void overdraft(){//透支设置
    Scanner reader=new Scanner(System.in);
    float low=read.nextFloat();
}

}

图片说明

public static void deposit(int i){//存取功能,错误位置
的前面一行,少了一个 }
你的}是和while(1) {配对的

第38行的else对应的{}少了一半