哪位大神看看为什么运行起来就不是我所要的结果

import java.util.*;

abstract class mails// 抽象类
{
String beginaddress;
String endaddress;

public void ShowMe() {
}// 显示邮件自身信息

}

class Parcel extends mails // 包裹类继承
{
int i = 0;
String storage[] = new String[20];
String str = beginaddress + endaddress;

public void ShowMe() {
    storage[this.i] = str;
    this.i++;
}

}

class Remittance extends mails// 汇款类继承
{
String inputname;
String outputname;
float fee;

public void ShowMe() {
    int i = 0;
    int j = 0;
    String str = inputname + outputname;
    Object arr[][] = new Object[5][5];
    arr[i][0] = str;
    arr[0][j] = fee;
    i++;
    j++;
    for (int k = 0; k < i; k++) {
        System.out.println("汇款双方" + arr[i][0] + "钱数" + arr[0][j]);
    }
}

}

class ShowMails {
mails showList[];
int num2;
Parcel a2 = new Parcel();
public static final int mas = 10;
private static final String NULL = null;
int present = 0;

public int putMails()// 存储邮件
{
    present = a2.i;
    if (present <= mas) {
        a2.ShowMe();
        for (int j = 0; j <= a2.i; j++) {
            System.out.println("包裹所有信息是:" + a2.storage[a2.i]);
        }
    } else {
        System.out.println("抱歉,邮件储量已满,请进行收取邮件操作后在进行该操作");
    }
    return present;
}

public int getMails()// 获取邮件
{
    a2.ShowMe();
    a2.i = num2;
    a2.storage[a2.i] = NULL;
    int count = 0;
    count++;
    return count;
}

public void showAll(int num1)// 展示邮件
{
    a2.ShowMe();// !!!
    a2.i = num1;// !!!
    System.out.println("第" + a2.i + "邮件的信息是 " + a2.storage[a2.i]);
    System.out.println("邮件最大储量为10");
    System.out.println("目前存入的邮件个数是" + present);
    System.out.println("目前收取的邮件个数为" + getMails());
    System.out.println("所剩可存储的邮件数为" + (mas - present + getMails()));

}

}

interface MailPost {
public void callPrice();

public void post();

}

class PostParcel extends Parcel implements MailPost// 可邮寄的的包裹
{
public void post() {
}

public void callPrice() {
}

}

class Postemit extends Remittance implements MailPost// 可邮寄的汇款
{
public void callPrice()// 计算邮费并以附带看书返回
{
float m = 15.00f;
ShowMails d1 = new ShowMails();
float n = d1.putMails() * m;
System.out.println("邮费是" + n);
}

public void post() {
}

}

public class Show {
public static void main(String args[])
{boolean flag=true;
boolean flag1=true;

     while(flag1)
     {System.out.println("请输入数字选择包裹或者汇款");
    System.out.println("1.包裹   ");
    System.out.println("2.汇款   ");
    @SuppressWarnings("resource")
    Scanner in=new Scanner(System.in);

     int m=(int) in.nextDouble();
     switch(m)
     {
     case 1:
     {

         while(flag)
         {
         System.out.println("1.添加包裹");
         System.out.println("2.查看所有包裹信息");
         System.out.println("3.获取包裹信息");
         System.out.println("4.收取邮件");
         System.out.println("5.查询邮费");
         System.out.println("6.退出");
         @SuppressWarnings("resource")
        Scanner in1=new Scanner(System.in);
         int n=(int) in1.nextDouble();
         switch(n)
         {
         case 1:
         {
             System.out.println("请输入邮件起始地址   ");
             @SuppressWarnings("resource")
            String bgn = new Scanner(System.in).nextLine();
             System.out.println("请输入邮件目的地址   ");
             @SuppressWarnings("resource")
            String end = new Scanner(System.in).nextLine();
             Parcel a1=new Parcel();
             a1. beginaddress=bgn;
             a1.endaddress=end;
             System.out.println("存储成功!");
             break; 
         }
         case 2:
         {
             ShowMails b1=new ShowMails();
             b1.putMails();
             break;
         }
         case 3:
         {
             System.out.println("请输入邮件编号");
             @SuppressWarnings({ "unused", "resource" })
            Scanner in2=new Scanner(System.in);
             int num1=(int) in1.nextDouble();
             ShowMails b2=new ShowMails();
             b2.showAll(num1);
             break;
         }
         case 4:
         {
             System.out.println("请输入要收取的邮件号");
             @SuppressWarnings({ "unused", "resource" })
            Scanner in2=new Scanner(System.in);
             int num0=(int) in1.nextDouble();
             ShowMails c1=new ShowMails();
             c1.num2=num0;
             break;
         }
         case 5:
         {
             Postemit d2=new Postemit();
             d2.callPrice();
             break;
         }

         case 6:
         {
             flag=false;
            break;
         }
         }
     }break;
     }

     case 2:
     {
         System.out.println("请输入汇款人姓名 ");
         @SuppressWarnings("resource")
        String name1 = new Scanner(System.in).nextLine();
         System.out.println("请输入需要汇款人的姓名 ");
         @SuppressWarnings("resource")
        String name2 = new Scanner(System.in).nextLine();
         System.out.println("请输入钱数/RMB ");
         @SuppressWarnings("resource")
        Scanner in1=new Scanner(System.in);
         float money=(float) in1.nextDouble();
         Remittance c1=new Remittance();
         c1.inputname=name1;
         c1.outputname=name2;
         c1.fee=money;
         System.out.println("汇款成功!");
         System.out.println("汇款信息如下:");
         Remittance d1=new Remittance();
         d1.ShowMe();
         break;
     }
     }

}

}
}