Hallo.
Habe ein Problem mit einer Aufgabe. Und zwar ist die class PhoneBookEntry gegeben. Dazu soll eine class PhoneBook erstellt werden und ein Programm PhoneBookManager, mit dem man sein Buch verwalten kann. Mein Problem ist nun (neben ein paar anderen kleineren Dingen), der catch-Block im PhoneBookManager. Der compiler sagt:
2 errors found:
File: C:\Privat\Java\HW10\PhoneBookManager.java [line: 68]
Error: C:\Privat\Java\HW10\PhoneBookManager.java:68: cannot find symbol
symbol : class FileNotFoundException
location: class PhoneBookManager
File: C:\Privat\Java\HW10\PhoneBookManager.java [line: 71]
Error: C:\Privat\Java\HW10\PhoneBookManager.java:71: cannot find symbol
symbol : class IOException
location: class PhoneBookManager
Wenn ich den catch-Block aber im PhoneBook direkt unter die werfende Methode setze, sagt er, dass diese exception schon gefangen wird - obwohl dem nicht der Fall ist. Ich hoffe, mir kann jemand sagen, was damit falsch läuft. Vielen dank im Voraus.
Hier der code:
-> PhoneBookEntry
-> PhoneBook
->PhoneBookManager
[/code]
Habe ein Problem mit einer Aufgabe. Und zwar ist die class PhoneBookEntry gegeben. Dazu soll eine class PhoneBook erstellt werden und ein Programm PhoneBookManager, mit dem man sein Buch verwalten kann. Mein Problem ist nun (neben ein paar anderen kleineren Dingen), der catch-Block im PhoneBookManager. Der compiler sagt:
2 errors found:
File: C:\Privat\Java\HW10\PhoneBookManager.java [line: 68]
Error: C:\Privat\Java\HW10\PhoneBookManager.java:68: cannot find symbol
symbol : class FileNotFoundException
location: class PhoneBookManager
File: C:\Privat\Java\HW10\PhoneBookManager.java [line: 71]
Error: C:\Privat\Java\HW10\PhoneBookManager.java:71: cannot find symbol
symbol : class IOException
location: class PhoneBookManager
Wenn ich den catch-Block aber im PhoneBook direkt unter die werfende Methode setze, sagt er, dass diese exception schon gefangen wird - obwohl dem nicht der Fall ist. Ich hoffe, mir kann jemand sagen, was damit falsch läuft. Vielen dank im Voraus.
Hier der code:
-> PhoneBookEntry
Code:
public class PhoneBookEntry {
private String lastName;
private String firstName;
private String phoneNumber;
public PhoneBookEntry(String aLastName, String aFirstName, String aPhoneNumber)
{
lastName = aLastName;
firstName = aFirstName;
phoneNumber = aPhoneNumber;
}
public String toString() {
return firstName + " " + lastName + " : " + phoneNumber;
}
}
-> PhoneBook
Code:
import java.util.*;
import java.io.*;
public class PhoneBook
{
private PhoneBookEntry[] PhoneBookArray = new PhoneBookEntry[10];
private int numEntries;
/**
constructor
creates a new phone book
*/
public PhoneBook()
{
int numEntries = 0;
PhoneBookArray = new PhoneBookEntry[50];
}
/**
loads entries from a file
@param aFilename the name of the input file
*/
public void loadEntry(String aFilename)
{
// Open source file for reading
Scanner input = new Scanner(new File(aFilename));
while (input.hasNext())
{
String line;
Scanner lineScan = new Scanner(line);
addEntry(lineScan.next(), lineScan.next(), lineScan.next());
}
input.close();
}
// public String toString()
// {
// String phonebookdata;
// phonebookdata = "Last Name: /t" + lastName + "/tFirst Name: /t";
// phonebookdata += "/tPhone Number: /t" + phoneNumber;
// return phonebookdata;
// }
/**
adds an entry to the phone book
@param aLastName a last name
@param aFirstName a first name
@param aPhoneNumber
*/
public void addEntry(String aLastName, String aFirstName, String aPhoneNumber)
{
if (numEntries >= PhoneBookArray.length)
{
resize();
}
PhoneBookArray[numEntries] = new PhoneBookEntry(aLastName, aFirstName, aPhoneNumber);
numEntries++;
}
/**
saves the phone book to a file
@param aFilename the name of the destination file
*/
public void save(String aFilename)
{
File destFile = new File(aFilename);
if (destFile.exists() && destFile.canWrite()) {
Scanner keyboard = new Scanner(System.in);
System.out.println("File " + aFilename + " exists. Overwrite?");
String answer = keyboard.next();
char first = answer.toLowerCase().charAt(0);
while ((first != 'y') && (first != 'n')) {
System.out.println("File " + aFilename + " exists. " +
"Overwrite? (y or n)");
answer = keyboard.next();
first = answer.toLowerCase().charAt(0);
}
if (first == 'n')
System.exit(0);
}
PrintWriter dest = new PrintWriter(destFile);
for (int i=0; i<PhoneBookArray.length; i++)
{
dest.println(PhoneBookArray[i]);
}
dest.close();
}
private void resize()
{
PhoneBookEntry[] newOne = new PhoneBookEntry[PhoneBookArray.length + 50];
System.arraycopy(PhoneBookArray, 0, newOne, 0, PhoneBookArray.length);
PhoneBookArray = newOne;
}
}
Code:
import java.util.*;
public class PhoneBookManager
{
public static void printMenu()
{
System.out.println();
System.out.println("<PhoneBookManager commands:\n");
System.out.println("a <last> <first> <phone> : add an entry in the phone "
+ "book");
System.out.println("l <filename> : load the entries from filename into the "
+ "phone book");
System.out.println("s <filename> : save the phone book to filename");
System.out.println("p : print all the entries in the phone book");
System.out.println("? : print the menu to the screen");
System.out.println("q : quit the program");
System.out.println();
}
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
PhoneBook yourPhonebook = null;
char command = '?';
yourPhonebook = new PhoneBook();
System.out.println("\nWelcome to PhoneBookManager!\n");
System.out.println("I have created a Phonebook for you. " +
"It has no entries yet." +
" Enter commands to change your Phonebook.\n");
printMenu();
while(true) { // keep looping till user quits
try {
command = keyboard.next().charAt(0);
switch (command) {
case 'a':
yourPhonebook.addEntry(keyboard.next(), keyboard.next(), keyboard.next());
break;
case 'l':
yourPhonebook.loadEntry(keyboard.next());
break;
case 's':
yourPhonebook.save(keyboard.next());
break;
case 'p':
System.out.println(yourPhonebook);
break;
case '?':
printMenu();
break;
case 'q':
System.out.println("Thank you for using the phonebook. Goodbye.");
System.exit(0);
default:
System.out.println("Unknown command: " + command);
printMenu();
break;
}
}
catch (NoSuchElementException e)
{
System.out.println(e.getMessage());
printMenu();
}
catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
catch (IOException e) {
System.out.println(e.getMessage());
}
catch (InputMismatchException e)
{
System.out.println("wrong input");
System.out.println("press '?' for help");
System.out.println();
}
keyboard.nextLine(); // ignore rest of line
System.out.println(yourPhonebook);
}
}
}
[/code]