У меня есть программа java, где я собираю записи от пользователя. Пользователю будет предложено ввести имя, номер телефона и адрес электронной почты. Когда я набираю полное имя (то есть: Майк Смит), программа сохраняет только первое имя. Когда он отправляет адрес электронной почты и номер телефона в текстовый документ, они меняются местами, поэтому адрес электронной почты находится в разделе номера телефона, а номер телефона находится в разделе адреса электронной почты.проверка и отправка ввода в текст doc
Вот часть моей основной получать информацию от пользователя
String name = Validator.getEntry(ip, "Enter name: ");
String email = Validator.getEntry(ip, "Enter email address");
String phone = Validator.getEntry(ip, "Enter phone number: ");
AddressBookEntry newEntry = new AddressBookEntry(name, email, phone);
AddressBookIO.saveEntry(newEntry);
Вот раздел моего класса валидатора проверки записи
public static String getEntry(Scanner ip, String prompt)
{
System.out.println(prompt);
String e = ip.next();
ip.nextLine();
return e;
}
Я попытался устранить это, устраняя валидатор и просто печатать
system.out.println("Enter name:");
name = ip.next();
и т. д. для e почты и телефона, но я получил те же результаты, что и его запуск через класс проверки. Я смущен тем, что нужно проверить дальше. Что-то не так с тем, что я сделал?
Вот мой AddressBookEntry CLAS
public class AddressBookEntry
{
private String name;
private String emailAddress;
private String phoneNumber;
public AddressBookEntry()
{
name = "";
emailAddress = "";
phoneNumber = "";
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setEmailAddress(String emailAddress)
{
this.emailAddress = emailAddress;
}
public String getEmailAddress()
{
return emailAddress;
}
public void setPhoneNumber(String phoneNumber)
{
this.phoneNumber = phoneNumber;
}
public String getPhoneNumber()
{
return phoneNumber;
}
public AddressBookEntry(String newname, String newphone, String newemail)
{
name = newname;
emailAddress = newemail;
phoneNumber = newphone;
}
}
Вот мой IO класс
import java.io.*;
public class AddressBookIO
{
private static File addressBookFile = new File("address_book.txt");
private static final String FIELD_SEP = "\t";
private static final int COL_WIDTH = 20;
// use this method to return a string that displays
// all entries in the address_book.txt file
public static String getEntriesString()
{
BufferedReader in = null;
try
{
checkFile();
in = new BufferedReader(
new FileReader(addressBookFile));
// define the string and set a header
String entriesString = "";
entriesString = padWithSpaces("Name", COL_WIDTH)
+ padWithSpaces("Email", COL_WIDTH)
+ padWithSpaces("Phone", COL_WIDTH)
+ "\n";
entriesString += padWithSpaces("------------------", COL_WIDTH)
+ padWithSpaces("------------------", COL_WIDTH)
+ padWithSpaces("------------------", COL_WIDTH)
+ "\n";
// append each line in the file to the entriesString
String line = in.readLine();
while(line != null)
{
String[] columns = line.split(FIELD_SEP);
String name = columns[0];
String emailAddress = columns[1];
String phoneNumber = columns[2];
entriesString +=
padWithSpaces(name, COL_WIDTH) +
padWithSpaces(emailAddress, COL_WIDTH) +
padWithSpaces(phoneNumber, COL_WIDTH) +
"\n";
line = in.readLine();
}
return entriesString;
}
catch(IOException ioe)
{
ioe.printStackTrace();
return null;
}
finally
{
close(in);
}
}
// use this method to append an address book entry
// to the end of the address_book.txt file
public static boolean saveEntry(AddressBookEntry entry)
{
PrintWriter out = null;
try
{
checkFile();
// open output stream for appending
out = new PrintWriter(
new BufferedWriter(
new FileWriter(addressBookFile, true)));
// write all entry to the end of the file
out.print(entry.getName() + FIELD_SEP);
out.print(entry.getEmailAddress() + FIELD_SEP);
out.print(entry.getPhoneNumber() + FIELD_SEP);
out.println();
}
catch(IOException ioe)
{
ioe.printStackTrace();
return false;
}
finally
{
close(out);
}
return true;
}
// a private method that creates a blank file if the file doesn't already exist
private static void checkFile() throws IOException
{
// if the file doesn't exist, create it
if (!addressBookFile.exists())
addressBookFile.createNewFile();
}
// a private method that closes the I/O stream
private static void close(Closeable stream)
{
try
{
if (stream != null)
stream.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
// a private method that is used to set the width of a column
private static String padWithSpaces(String s, int length)
{
if (s.length() < length)
{
StringBuilder sb = new StringBuilder(s);
while(sb.length() < length)
{
sb.append(" ");
}
return sb.toString();
}
else
{
return s.substring(0, length);
}
}
}
Мы не можем сказать, почему ваш адрес электронной почты или номер телефона меняются местами, не видя, что делают ваши классы AddressBookEntry/IO. – bvulaj
Я отправлю их. –