Прочитать дату из файла и вернуть строку месяца, даты, годаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Прочитать дату из файла и вернуть строку месяца, даты, года

Сообщение Anonymous »

Мне нужно прочитать входной файл, чтобы создать адресную книгу на основе данного файла. Файл состоит из 12 контактов и имеет следующий формат.
У меня настроен сканер в testAddressBook, и все выглядит хорошо. Не включая весь этот файл, но основная часть, в которой я настраиваю сканер, выглядит следующим образом.

Код: Выделить всё

 import java.io.*;
import java.util.*;

public class testAddressBook
{
static Scanner console = new Scanner(System.in);

public static void main(String[] args) throws FileNotFoundException
{

Scanner inFile = new Scanner(new FileReader("AddressBook.txt"));
//inFile.useDelimiter( "[/\n]" );  tried this but doesn't work

AddressBook myMembers = new AddressBook(inFile);

inFile.close(); //InFile.close();
Формат входного файла выглядит следующим образом:

Код: Выделить всё

    12      //this is an int at the beginning of the file that says how many contacts I have
Rodgers Katie   //this is last and first name
12/09/1999       //this is their birthdate
1 Main St APT 6          //this is their street address
Taunton                   //this is their city
MA 02108 (509)245-1489          //this is state zipcode and phone numb
Family                         //this is their relationship to me
Malik Shelly         //next person in contact file...  ect...
12/08/2000
100 Lincoln Drive
Omaha
NE 68131 (402)555-1212
Friend
Мне нужно перенести это в класс ExtPerson, который является классом, который расширяет Person(имя строки - последний и первый), Address (все строки улицы, города, штата, почтовый индекс, телефон), Date (может быть строкой или целым числом - месяц, день, год), а ExtPerson также создает переменную для хранения того, как этот человек мне известен, будь то друг, семья или деловой контакт. Это должен быть упорядоченный список, и я должен иметь возможность сортировать их по тому, как они связаны, вводить новые контакты и выполнять различные другие функции из меню, включая сортировку по дню рождения. У меня возникли проблемы с чтением даты из файла в формате 02.12.1999 и возвратом месяца, дня и года как трех отдельных элементов - удалением косой черты между месяцем, днем ​​и годом. Мне нужно, чтобы все три были отдельными. Я перепробовал множество вещей, но ничего не могу заставить работать. Вот мой код для трех из шести классов в моей программе, которые используют эту дату... Моя проблема в классе AddressBook, когда я читаю файл, он ломается, когда я пытаюсь прочитать дату дня рождения, не знаю, как это прочитать и сохранить.
Первый класс - Date: //Мне необходимо настроить его таким образом, хотя переменные могут быть int или строковыми
//думаю, что я бы предпочел int, но в любом случае ничего страшного
public class Date
{
частная строка dMonth;
частная строка dDay;
частная строка dYear;
//частная строка bday; попробуй..

Код: Выделить всё

public Date()
{

dMonth = "";
dDay = "";
dYear = "";
}

public Date(String month, String day, String year)
{
dMonth = month;
dDay = day;
dYear = year;
}

public void setDate(String month, String day, String year)//had to add void..
{
dMonth = month;
dDay = day;
dYear = year;
}

public String getMonth()
{
return dMonth;

}
public String getDate()
{
return dDay;

}
public String getYear()
{
return dYear;

}

public String getDate(String month, String day, String year)
{
return (dMonth + "-" +dDay + "-" +dYear);
}
Следующий класс — ExtPerson....

Код: Выделить всё

 //THIS CLASS EXTENDS PERSON,DATE,ADDRESS

public class ExtPerson

{
private Person name;
private Date bDay;
private Address address;
private String relationship;

public ExtPerson()
{
name= new Person ();
bDay = new Date();
address = new Address();
relationship = "";
}

public ExtPerson(String last, String first, String month, String day, String
year, String street, String city, String state, String zipcode, String phone, String
relateby)
{

name= new Person (first, last);
bDay = new Date(month, day, year);
address = new Address (street, city,state,zipcode,phone);
relationship = relateby;

}

//methd to set personal info.  instance variables are set according to parameters

public void setMemberInfo(String last, String first, String month, String day, String
year, String street, String city, String state, String zipcode, String phone,String
relateby)
{
name.setName(last, first);
bDay.setDate(month, day, year);
address.setAddress(street, city,state,zipcode,phone);
relationship = relateby;
}

public void setRelationship(String relateby)
{
relationship = relateby;
}

public boolean isRelationship(String relateby)
{
return (relationship.equals(relateby));
}

public String getRelationship()
{
return relationship;
}
public Person getMembername()
{
return name;
}
public void printRelationship()
{
System.out.println("Relationship: " + relationship);
}

public void printInfo()
{
System.out.println ("Name: " + name.toString());
System.out.println ("Date of birth: " + bDay.toString ());
System.out.println ("Address: " + address.toString());
System.out.println ("Relationship: " + relationship.toString());
}
}
И последний класс Адресной книги, где я прочитал все эти имена с помощью устройства чтения файлов: ЭТО ГДЕ ПРОИСХОДИТ ОШИБКА, КОГДА ДОБИРАЕТСЯ ДО ДНЯ РОЖДЕНИЯ

Код: Выделить всё

 import java.io.*;
import java.util.*;

public class AddressBook
{
int nMembers;//in the beginning of infile, there is an int that says how many people are
in the file
ExtPerson[] bookMembers = new ExtPerson[500];

public AddressBook(Scanner inFile )
{
String last, first, street, city, state, zipcode,phone, relateby;
String month,day,year;
//int month, day, year;  not sure if I'm better off with int or string for
these..

nMembers = inFile.nextInt();
inFile.nextLine(); //discard the newline character

for (int index = 0; index < nMembers; index++)
{
bookMembers[index] = new ExtPerson();

first =  inFile.next();
last =  inFile.next();

//HERE IS MY PROBLEM..  BIRTHDATE IS IN FILE LIKE 12/04/1999
// THE CLASS DATE MUST INCLUDE A MONTH, DATE, YEAR
//I MUST RETURN THIS WITH THOSE THREE BUT DON'T KNOW HOW TO STRIP THEM OUT

??  bday = inFile.nextLine(); //TAKE AS STRING AND SOMEHOW IN ANOTHER CLASS
BREAK IT DOWN LATER??
//or ??
month = inFile.next();//CAN I SOMEHOW STRIP IT DOWN NOW TO STORE FOR THIS INDEX
day = inFile.next();
year = inFile.next();

street =  inFile.nextLine();
city =  inFile.nextLine();
state =  inFile.next();
zipcode =  inFile.next();
phone =  inFile.next();
relateby =  inFile.nextLine();
//amount = inFile.nextDouble();
inFile.nextLine(); //discard the newline character
bookMembers[index].setMemberInfo(first,last,
month,day,year,street,city,state,zipcode,phone,relateby);
}
insertionSort();
}

public void printInfo()
{
for (int index = 0; index < nMembers; ++ index)
bookMembers[index].printInfo();
}

public void insertionSort()
{
int location;
ExtPerson temp = new ExtPerson();

for (int firstOutOfOrder = 1; firstOutOfOrder < nMembers;
firstOutOfOrder++)
if (bookMembers[firstOutOfOrder].getMembername().compareTo(bookMembers
[firstOutOfOrder - 1].getMembername()) 0 && (bookMembers[location - 1].getMembername().compareTo
(temp.getMembername())

Подробнее здесь: [url]https://stackoverflow.com/questions/20014692/read-date-from-a-file-and-return-a-string-of-month-date-year[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»