Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文件读取器合并到代码中时出现问题_Java_Filereader - Fatal编程技术网

Java 将文件读取器合并到代码中时出现问题

Java 将文件读取器合并到代码中时出现问题,java,filereader,Java,Filereader,我已经写了这段代码,几乎完成了,但是我一直想知道如何在代码中实现filereader,将文件中的数据放入现有的数字列表/数组中。我在一些网站上查阅了如何安装filereader,但在语法方面却被一次又一次地难住了:(我还被迫坚持使用Java1.4.2,所以我不能使用Scanner之类的东西 以下是不完整的代码: import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReade

我已经写了这段代码,几乎完成了,但是我一直想知道如何在代码中实现filereader,将文件中的数据放入现有的数字列表/数组中。我在一些网站上查阅了如何安装filereader,但在语法方面却被一次又一次地难住了:(我还被迫坚持使用Java1.4.2,所以我不能使用Scanner之类的东西

以下是不完整的代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
//Import libraries


public class phoneBook
{

    static ArrayList ListNumbers = new ArrayList(); //Create array
    public static void main(String[] args)
    {
        InputStreamReader inp = null;
        BufferedReader input = null;//Create inputstreamreader and bufferedreader
        int nOption  = 0;
        try
        {
            inp = new InputStreamReader(System.in);
            input = new BufferedReader(inp);
            while(true)
            {
        System.out.println("Welcome to PDA Phonebook");
        System.out.println(" " + "\nWhat would you like to do?");
                System.out.println("1. Enter Phone Numbers/ Add a Phone Number.");
                System.out.println("2. Modify Phone Number.");
                System.out.println("3. Delete Phone Number.");
                System.out.println("4. Sort Phone Number.");
                System.out.println("5. Show all Phone Numbers.");
        System.out.println("6. Load Phone Numbers.");
                System.out.println("7. Exit.");
                System.out.println("\nChoose an option(1-7) >> ");
                nOption = Integer.parseInt(input.readLine());
                //Layout visual menu
                switch(nOption)
                {
                    case 1:
                        AddNumber(input);
                        break;
                    case 2:
                        ModifyNumber(input);
                        break;
                    case 3:
                        DeleteNumber(input);
                        break;
                    case 4:
                        SortNumber(input);
                        break;
                    case 5:
                        ShowAllNumbers();
                        break;
            case 6:
            LoadNumbers(input);
            break;
                    case 7:
                        System.out.println("Exiting program. Press any key to continue....");
                        input.read();
                        System.exit(0);
                        break;
        //Create cases for the input of the user
                }
            }
        }
        catch(Exception exp)
        {
        }
    }

//create private static void for each option in the list

    private static void AddNumber(BufferedReader input) throws IOException
    {

    NumberTemplate tmpObject = null;
    tmpObject = new NumberTemplate();//create tmp object for new phone numbers
        while(true)
        {

            System.out.println("Name belonging to the phone number >> ");
            tmpObject.NumberName = input.readLine().toString();//Convert input of name to a string
            System.out.println("Phone Number");
            tmpObject.Number = input.readLine().toString(); //Convert input of phone number to a string
            if(tmpObject != null)
                ListNumbers.add(tmpObject);//Add the new phone number to the list of numbers

            System.out.println("\n Do you want to add another phone number?(y/n) >>");            
            if(!input.readLine().toLowerCase().equals("y"))//Ask user if they want to add another number
                break;//Return to list
        }
    }

    private static void ModifyNumber(BufferedReader input) throws IOException
    {
         NumberTemplate tmpObject = null;
         System.out.println("Name of the number to modify >> ");
         String OldNumberName = input.readLine();//User inputs name of number they want to edit
         int index = getNumberIndexByName(OldNumberName);
         if(index == -1)//if the number does not exist
         {
             System.out.println(" Number belonging to " + OldNumberName+ " not found.");//Tell the user if they entered an nonexistant number name
     }
         else//if number does exist
         {
             tmpObject = (NumberTemplate)ListNumbers.get(index);
             showNumber(tmpObject);
             System.out.println("What you want to modify (Name|Number)? >>");
             String strOption = input.readLine();//User chooses what they want to edit from the number
             if("name".equals(strOption.toLowerCase()))
             {
                System.out.println("New Name belonging to the number >> ");
                tmpObject.NumberName = input.readLine().toString();//User inputs the name they want to change the number to
             }
             else  if("number".equals(strOption.toLowerCase()))
             {
                System.out.println("New number "+tmpObject.NumberName);
                tmpObject.Number = input.readLine().toString();//User inputs the number they want to change
             }
             else
             {
                 System.out.println("Unable to locate the property entered..");
             }
             ListNumbers.set(index, tmpObject);//Apply the changes to the list of numbers
         }
    }

    private static int getNumberIndexByName(String Name)
    {
        int index = -1;
        NumberTemplate tmp =null;
        for(int i=0;i<ListNumbers.size();i++)
        {
            tmp = (NumberTemplate)ListNumbers.get(i);
            if(tmp.NumberName.toLowerCase().equals(Name.toLowerCase()))
            {    
                index = i;
                break;
            }
        }
        return index;//List numbers
    }

    private static void showNumber(NumberTemplate tnumber)
    {
        System.out.println(tnumber.NumberName+"\t\t"+tnumber.Number);
    }

    private static void DeleteNumber(BufferedReader input) throws IOException
    {
         System.out.println("Name of the number to delete >> ");
         String OldNumberName = input.readLine();
         int index = getNumberIndexByName(OldNumberName);
         if(index == -1)//If number name doesn't exist
         {
             System.out.println(" Number belonging to " + OldNumberName+ " not found.");
         }
         else//if number name exists
         {
             ListNumbers.remove(index);//Remove the number from list of numbers
             System.out.println(" Number belonging to " + OldNumberName+ "deleted successfully.");
         }
    }

    private static void SortNumber(BufferedReader input) throws IOException
    {
         System.out.println("Enter the key to sort (Name|Number)? >>");
         String strOption = input.readLine();//User inputs what they want to sort the numbers by
         int nSize = ListNumbers.size();
         String str1, str2;
         if("name".equals(strOption.toLowerCase()))//Sort numbers by name
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((NumberTemplate)ListNumbers.get(i)).NumberName;
                     str2 = ((NumberTemplate)ListNumbers.get(j)).NumberName;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {
                         NumberTemplate  tmp = (NumberTemplate) ListNumbers.get(i);
                         ListNumbers.set(i, (NumberTemplate) ListNumbers.get(j));
                         ListNumbers.set(j, tmp);
                     }
                 }
             }
         }
         else  if("number".equals(strOption.toLowerCase()))//Sort numbers by number
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((NumberTemplate)ListNumbers.get(i)).Number;
                     str2 = ((NumberTemplate)ListNumbers.get(j)).Number;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {   
                         NumberTemplate  tmp = (NumberTemplate) ListNumbers.get(i);
                         ListNumbers.set(i, (NumberTemplate) ListNumbers.get(j));
                         ListNumbers.set(j, tmp);
                     }
                 }
             }
         }

         else
         {
             System.out.println("Unable to locate the property entered..");
         }
         ShowAllNumbers();
    }

    private static void ShowAllNumbers()
    {
         System.out.println("PDA Phone Book\n");//List all the numbers
         System.out.println("Name\t\tNumber");
         for(int i=0;i<ListNumbers.size();i++)
         {

             showNumber((NumberTemplate)ListNumbers.get(i));
         }
    }


    private static void LoadNumbers(BufferedReader input) throws FileNotFoundException, IOException
    {
    {BufferedReader in = new BufferedReader(new FileReader("phoneBook.txt"));
    while(true)
    {
        NumberTemplate tmpObject = null;
            String line = in.readLine();
            if (line == null)
                break;
            NumberTemplate nt = new NumberTemplate();
            nt.NumberName = line;
            line = in.readLine();
        nt.Number = Integer.parseInt(line);
            ListNumbers.add(nt);

    }
    }
}



class NumberTemplate
{
    public String NumberName = "";
    public String Number = "";

}
}
有以下错误:

C:\Java\bin>javac phoneBook.java
phoneBook.java:81: error: non-static variable this cannot be referenced from a s
tatic context
        tmpObject = new NumberTemplate();//create tmp object for new phone numbe
rs
                    ^
phoneBook.java:240: error: non-static variable this cannot be referenced from a
static context
                NumberTemplate nt = new NumberTemplate();
                                    ^
phoneBook.java:243: error: incompatible types
                nt.Number = Integer.parseInt(line);
                                            ^
  required: String
  found:    int
Note: phoneBook.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors
该文件由45个名称和数字组成,格式如下:

name
number
name
number
etc....

您正在将
input
通过
System.in
初始化传递给每个方法。您可能希望

BufferedReader in = new BufferedReader(new FileReader("foo"));
并将中的传递给方法。要使用标准输入流和文件输入流,需要额外的变量。也可以使用公共字段

有关更多信息,请查看或

可能需要一些
试试/catch

此代码重复执行,直到文件末尾,读取名称,在
NumberTemplate
实例中设置适当的值,然后解析整数并执行相同的操作。最后将其添加到
ArrayList

编译代码

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
//Import libraries


public class phoneBook
{

    static ArrayList ListNumbers = new ArrayList(); //Create array
    public static void main(String[] args)
    {
        InputStreamReader inp = null;
        BufferedReader input = null;//Create inputstreamreader and bufferedreader
        int nOption  = 0;
        try
        {
            inp = new InputStreamReader(System.in);
            input = new BufferedReader(inp);
            while(true)
            {
        System.out.println("Welcome to PDA Phonebook");
        System.out.println(" " + "\nWhat would you like to do?");
                System.out.println("1. Enter Phone Numbers/ Add a Phone Number.");
                System.out.println("2. Modify Phone Number.");
                System.out.println("3. Delete Phone Number.");
                System.out.println("4. Sort Phone Number.");
                System.out.println("5. Show all Phone Numbers.");
        System.out.println("6. Load Phone Numbers.");
                System.out.println("7. Exit.");
                System.out.println("\nChoose an option(1-7) >> ");
                nOption = Integer.parseInt(input.readLine());
                //Layout visual menu
                switch(nOption)
                {
                    case 1:
                        AddNumber(input);
                        break;
                    case 2:
                        ModifyNumber(input);
                        break;
                    case 3:
                        DeleteNumber(input);
                        break;
                    case 4:
                        SortNumber(input);
                        break;
                    case 5:
                        ShowAllNumbers();
                        break;
            case 6:
            LoadNumbers(input);
            break;
                    case 7:
                        System.out.println("Exiting program. Press any key to continue....");
                        input.read();
                        System.exit(0);
                        break;
        //Create cases for the input of the user
                }
            }
        }
        catch(Exception exp)
        {
        }
    }

//create private static void for each option in the list

    private static void AddNumber(BufferedReader input) throws IOException
    {

    NumberTemplate tmpObject = null;
    tmpObject = new NumberTemplate();//create tmp object for new phone numbers
        while(true)
        {

            System.out.println("Name belonging to the phone number >> ");
            tmpObject.NumberName = input.readLine().toString();//Convert input of name to a string
            System.out.println("Phone Number");
            tmpObject.Number = input.readLine().toString(); //Convert input of phone number to a string
            if(tmpObject != null)
                ListNumbers.add(tmpObject);//Add the new phone number to the list of numbers

            System.out.println("\n Do you want to add another phone number?(y/n) >>");            
            if(!input.readLine().toLowerCase().equals("y"))//Ask user if they want to add another number
                break;//Return to list
        }
    }

    private static void ModifyNumber(BufferedReader input) throws IOException
    {
         NumberTemplate tmpObject = null;
         System.out.println("Name of the number to modify >> ");
         String OldNumberName = input.readLine();//User inputs name of number they want to edit
         int index = getNumberIndexByName(OldNumberName);
         if(index == -1)//if the number does not exist
         {
             System.out.println(" Number belonging to " + OldNumberName+ " not found.");//Tell the user if they entered an nonexistant number name
     }
         else//if number does exist
         {
             tmpObject = (NumberTemplate)ListNumbers.get(index);
             showNumber(tmpObject);
             System.out.println("What you want to modify (Name|Number)? >>");
             String strOption = input.readLine();//User chooses what they want to edit from the number
             if("name".equals(strOption.toLowerCase()))
             {
                System.out.println("New Name belonging to the number >> ");
                tmpObject.NumberName = input.readLine().toString();//User inputs the name they want to change the number to
             }
             else  if("number".equals(strOption.toLowerCase()))
             {
                System.out.println("New number "+tmpObject.NumberName);
                tmpObject.Number = input.readLine().toString();//User inputs the number they want to change
             }
             else
             {
                 System.out.println("Unable to locate the property entered..");
             }
             ListNumbers.set(index, tmpObject);//Apply the changes to the list of numbers
         }
    }

    private static int getNumberIndexByName(String Name)
    {
        int index = -1;
        NumberTemplate tmp =null;
        for(int i=0;i<ListNumbers.size();i++)
        {
            tmp = (NumberTemplate)ListNumbers.get(i);
            if(tmp.NumberName.toLowerCase().equals(Name.toLowerCase()))
            {    
                index = i;
                break;
            }
        }
        return index;//List numbers
    }

    private static void showNumber(NumberTemplate tnumber)
    {
        System.out.println(tnumber.NumberName+"\t\t"+tnumber.Number);
    }

    private static void DeleteNumber(BufferedReader input) throws IOException
    {
         System.out.println("Name of the number to delete >> ");
         String OldNumberName = input.readLine();
         int index = getNumberIndexByName(OldNumberName);
         if(index == -1)//If number name doesn't exist
         {
             System.out.println(" Number belonging to " + OldNumberName+ " not found.");
         }
         else//if number name exists
         {
             ListNumbers.remove(index);//Remove the number from list of numbers
             System.out.println(" Number belonging to " + OldNumberName+ "deleted successfully.");
         }
    }

    private static void SortNumber(BufferedReader input) throws IOException
    {
         System.out.println("Enter the key to sort (Name|Number)? >>");
         String strOption = input.readLine();//User inputs what they want to sort the numbers by
         int nSize = ListNumbers.size();
         String str1, str2;
         if("name".equals(strOption.toLowerCase()))//Sort numbers by name
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((NumberTemplate)ListNumbers.get(i)).NumberName;
                     str2 = ((NumberTemplate)ListNumbers.get(j)).NumberName;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {
                         NumberTemplate  tmp = (NumberTemplate) ListNumbers.get(i);
                         ListNumbers.set(i, (NumberTemplate) ListNumbers.get(j));
                         ListNumbers.set(j, tmp);
                     }
                 }
             }
         }
         else  if("number".equals(strOption.toLowerCase()))//Sort numbers by number
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((NumberTemplate)ListNumbers.get(i)).Number;
                     str2 = ((NumberTemplate)ListNumbers.get(j)).Number;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {   
                         NumberTemplate  tmp = (NumberTemplate) ListNumbers.get(i);
                         ListNumbers.set(i, (NumberTemplate) ListNumbers.get(j));
                         ListNumbers.set(j, tmp);
                     }
                 }
             }
         }

         else
         {
             System.out.println("Unable to locate the property entered..");
         }
         ShowAllNumbers();
    }

    private static void ShowAllNumbers()
    {
         System.out.println("PDA Phone Book\n");//List all the numbers
         System.out.println("Name\t\tNumber");
         for(int i=0;i<ListNumbers.size();i++)
         {

             showNumber((NumberTemplate)ListNumbers.get(i));
         }
    }


    private static void LoadNumbers(BufferedReader input) throws FileNotFoundException, IOException
    {
    BufferedReader in = new BufferedReader(new FileReader("phoneBook.txt"));
    while(true)
    {
        NumberTemplate tmpObject = null;
            String line = in.readLine();
            if (line == null)
                break;
            NumberTemplate nt = new NumberTemplate();
            nt.NumberName = line;
            line = in.readLine();
        nt.Number = line;
            ListNumbers.add(nt);

    }

}
}



class NumberTemplate
{
    public String NumberName = "";
    public String Number = "";

}
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
//导入库
公共类电话簿
{
静态ArrayList ListNumbers=新建ArrayList();//创建数组
公共静态void main(字符串[]args)
{
InputStreamReader inp=null;
BufferedReader input=null;//创建inputstreamreader和BufferedReader
int-nOption=0;
尝试
{
inp=新的InputStreamReader(System.in);
输入=新的缓冲读取器(inp);
while(true)
{
System.out.println(“欢迎使用PDA电话簿”);
System.out.println(“+”\n您想做什么?”);
System.out.println(“1.输入电话号码/添加电话号码”);
System.out.println(“2.修改电话号码”);
System.out.println(“3.删除电话号码”);
System.out.println(“4.分类电话号码”);
System.out.println(“5.显示所有电话号码”);
System.out.println(“6.加载电话号码”);
System.out.println(“7.Exit”);
System.out.println(“\n选择一个选项(1-7)>>”;
nOption=Integer.parseInt(input.readLine());
//布局可视化菜单
开关(nOption)
{
案例1:
AddNumber(输入);
打破
案例2:
修改编号(输入);
打破
案例3:
删除号码(输入);
打破
案例4:
SortNumber(输入);
打破
案例5:
ShowAllNumbers();
打破
案例6:
装载编号(输入);
打破
案例7:
System.out.println(“退出程序。按任意键继续…”);
input.read();
系统出口(0);
打破
//为用户的输入创建案例
}
}
}
捕获(异常扩展)
{
}
}
//为列表中的每个选项创建专用静态void
私有静态void AddNumber(BufferedReader输入)引发IOException
{
numberTemplateTMPObject=null;
tmpObject=newnumbertemplate();//为新电话号码创建tmp对象
while(true)
{
System.out.println(“属于电话号码>>的名称”);
tmpObject.NumberName=input.readLine().toString();//将名称的输入转换为字符串
System.out.println(“电话号码”);
tmpObject.Number=input.readLine().toString();//将电话号码的输入转换为字符串
if(tmpObject!=null)
ListNumbers.add(tmpObject);//将新电话号码添加到号码列表中
System.out.println(“\n是否要添加其他电话号码?(y/n)>>”;
if(!input.readLine().toLowerCase().equals(“y”)//询问用户是否要添加其他数字
break;//返回列表
}
}
私有静态void ModifyNumber(BufferedReader输入)引发IOException
{
numberTemplateTMPObject=null;
System.out.println(“要修改的编号的名称>>”;
String OldNumberName=input.readLine();//用户输入要编辑的数字的名称
int index=getNumberIndexByName(OldNumberName);
if(index=-1)//如果该数字不存在
{
System.out.println(“属于“+OldNumberName+”的编号未找到”);//如果用户输入了不存在的编号名称,请告诉用户
}
else//如果数字确实存在
{
tmpObject=(NumberTemplate)ListNumbers.get(index);
显示编号(tmpObject);
System.out.println(“要修改的内容(名称|编号)?>>”;
String strOption=input.readLine();//用户从数字中选择要编辑的内容
if(“name”.equals(strOption.toLowerCase()))
{
System.out.println(“属于编号>>的新名称”);
tmpObject.NumberName=input.readLine().toString();//用户输入要更改数字的名称
}
else if(“number”.equals(strOption.toLowerCase()))
{
System.out.println(“新编号”+tmpObject.NumberName);
tmpObject.Number=input.readLine().to
while(true)
{
    String line = in.readLine();
    if (line == null)
        break;
    NumberTemplate nt = new NumberTemplate();
    nt.NumberName = line;
    line = in.readLine();
    nt.Number = Integer.parseInt(line);
    ListNumbers.add(nt);
}
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
//Import libraries


public class phoneBook
{

    static ArrayList ListNumbers = new ArrayList(); //Create array
    public static void main(String[] args)
    {
        InputStreamReader inp = null;
        BufferedReader input = null;//Create inputstreamreader and bufferedreader
        int nOption  = 0;
        try
        {
            inp = new InputStreamReader(System.in);
            input = new BufferedReader(inp);
            while(true)
            {
        System.out.println("Welcome to PDA Phonebook");
        System.out.println(" " + "\nWhat would you like to do?");
                System.out.println("1. Enter Phone Numbers/ Add a Phone Number.");
                System.out.println("2. Modify Phone Number.");
                System.out.println("3. Delete Phone Number.");
                System.out.println("4. Sort Phone Number.");
                System.out.println("5. Show all Phone Numbers.");
        System.out.println("6. Load Phone Numbers.");
                System.out.println("7. Exit.");
                System.out.println("\nChoose an option(1-7) >> ");
                nOption = Integer.parseInt(input.readLine());
                //Layout visual menu
                switch(nOption)
                {
                    case 1:
                        AddNumber(input);
                        break;
                    case 2:
                        ModifyNumber(input);
                        break;
                    case 3:
                        DeleteNumber(input);
                        break;
                    case 4:
                        SortNumber(input);
                        break;
                    case 5:
                        ShowAllNumbers();
                        break;
            case 6:
            LoadNumbers(input);
            break;
                    case 7:
                        System.out.println("Exiting program. Press any key to continue....");
                        input.read();
                        System.exit(0);
                        break;
        //Create cases for the input of the user
                }
            }
        }
        catch(Exception exp)
        {
        }
    }

//create private static void for each option in the list

    private static void AddNumber(BufferedReader input) throws IOException
    {

    NumberTemplate tmpObject = null;
    tmpObject = new NumberTemplate();//create tmp object for new phone numbers
        while(true)
        {

            System.out.println("Name belonging to the phone number >> ");
            tmpObject.NumberName = input.readLine().toString();//Convert input of name to a string
            System.out.println("Phone Number");
            tmpObject.Number = input.readLine().toString(); //Convert input of phone number to a string
            if(tmpObject != null)
                ListNumbers.add(tmpObject);//Add the new phone number to the list of numbers

            System.out.println("\n Do you want to add another phone number?(y/n) >>");            
            if(!input.readLine().toLowerCase().equals("y"))//Ask user if they want to add another number
                break;//Return to list
        }
    }

    private static void ModifyNumber(BufferedReader input) throws IOException
    {
         NumberTemplate tmpObject = null;
         System.out.println("Name of the number to modify >> ");
         String OldNumberName = input.readLine();//User inputs name of number they want to edit
         int index = getNumberIndexByName(OldNumberName);
         if(index == -1)//if the number does not exist
         {
             System.out.println(" Number belonging to " + OldNumberName+ " not found.");//Tell the user if they entered an nonexistant number name
     }
         else//if number does exist
         {
             tmpObject = (NumberTemplate)ListNumbers.get(index);
             showNumber(tmpObject);
             System.out.println("What you want to modify (Name|Number)? >>");
             String strOption = input.readLine();//User chooses what they want to edit from the number
             if("name".equals(strOption.toLowerCase()))
             {
                System.out.println("New Name belonging to the number >> ");
                tmpObject.NumberName = input.readLine().toString();//User inputs the name they want to change the number to
             }
             else  if("number".equals(strOption.toLowerCase()))
             {
                System.out.println("New number "+tmpObject.NumberName);
                tmpObject.Number = input.readLine().toString();//User inputs the number they want to change
             }
             else
             {
                 System.out.println("Unable to locate the property entered..");
             }
             ListNumbers.set(index, tmpObject);//Apply the changes to the list of numbers
         }
    }

    private static int getNumberIndexByName(String Name)
    {
        int index = -1;
        NumberTemplate tmp =null;
        for(int i=0;i<ListNumbers.size();i++)
        {
            tmp = (NumberTemplate)ListNumbers.get(i);
            if(tmp.NumberName.toLowerCase().equals(Name.toLowerCase()))
            {    
                index = i;
                break;
            }
        }
        return index;//List numbers
    }

    private static void showNumber(NumberTemplate tnumber)
    {
        System.out.println(tnumber.NumberName+"\t\t"+tnumber.Number);
    }

    private static void DeleteNumber(BufferedReader input) throws IOException
    {
         System.out.println("Name of the number to delete >> ");
         String OldNumberName = input.readLine();
         int index = getNumberIndexByName(OldNumberName);
         if(index == -1)//If number name doesn't exist
         {
             System.out.println(" Number belonging to " + OldNumberName+ " not found.");
         }
         else//if number name exists
         {
             ListNumbers.remove(index);//Remove the number from list of numbers
             System.out.println(" Number belonging to " + OldNumberName+ "deleted successfully.");
         }
    }

    private static void SortNumber(BufferedReader input) throws IOException
    {
         System.out.println("Enter the key to sort (Name|Number)? >>");
         String strOption = input.readLine();//User inputs what they want to sort the numbers by
         int nSize = ListNumbers.size();
         String str1, str2;
         if("name".equals(strOption.toLowerCase()))//Sort numbers by name
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((NumberTemplate)ListNumbers.get(i)).NumberName;
                     str2 = ((NumberTemplate)ListNumbers.get(j)).NumberName;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {
                         NumberTemplate  tmp = (NumberTemplate) ListNumbers.get(i);
                         ListNumbers.set(i, (NumberTemplate) ListNumbers.get(j));
                         ListNumbers.set(j, tmp);
                     }
                 }
             }
         }
         else  if("number".equals(strOption.toLowerCase()))//Sort numbers by number
         {
             for(int i = 0;i<nSize;i++)
             {
                 for(int j = (i+1);j<nSize;j++)
                 {
                     str1 = ((NumberTemplate)ListNumbers.get(i)).Number;
                     str2 = ((NumberTemplate)ListNumbers.get(j)).Number;

                     if(str1.compareToIgnoreCase(str2) > 0)
                     {   
                         NumberTemplate  tmp = (NumberTemplate) ListNumbers.get(i);
                         ListNumbers.set(i, (NumberTemplate) ListNumbers.get(j));
                         ListNumbers.set(j, tmp);
                     }
                 }
             }
         }

         else
         {
             System.out.println("Unable to locate the property entered..");
         }
         ShowAllNumbers();
    }

    private static void ShowAllNumbers()
    {
         System.out.println("PDA Phone Book\n");//List all the numbers
         System.out.println("Name\t\tNumber");
         for(int i=0;i<ListNumbers.size();i++)
         {

             showNumber((NumberTemplate)ListNumbers.get(i));
         }
    }


    private static void LoadNumbers(BufferedReader input) throws FileNotFoundException, IOException
    {
    BufferedReader in = new BufferedReader(new FileReader("phoneBook.txt"));
    while(true)
    {
        NumberTemplate tmpObject = null;
            String line = in.readLine();
            if (line == null)
                break;
            NumberTemplate nt = new NumberTemplate();
            nt.NumberName = line;
            line = in.readLine();
        nt.Number = line;
            ListNumbers.add(nt);

    }

}
}



class NumberTemplate
{
    public String NumberName = "";
    public String Number = "";

}