2013-11-28 3 views
2

Эта программа предназначена для запроса пользователю адресной информации. Идентифицируйте адрес, который будет первым по почтовому индексу, а затем распечатайте этот адрес.Проблемы с Integer и ArrayList

У меня возникает пара вопросов. Когда я пытаюсь присвоить значение int переменной квартиры, я получаю сообщение об ошибке. То же самое с частью zip-кода. Как только минимальное значение будет найдено, я хочу получить индекс минимального значения, чтобы я мог печатать одинаковое значение индекса для каждого arraylist.

Может кто-нибудь указать мне в правильном направлении или дать мне хорошую ссылку для этого? Я думаю, что я просто путаю несколько вещей.

package newchapter7; 
import java.util.*; 
/** 
* 
* @author Crazy 
*/ 
public class Address { 


ArrayList<Integer> houses = new ArrayList<>(); 
ArrayList<String> streets = new ArrayList<>(); 
ArrayList<Integer> apts = new ArrayList<>(); 
ArrayList<String> cities = new ArrayList<>(); 
ArrayList<String> states = new ArrayList<>(); 
ArrayList<Integer> zips = new ArrayList<>(); 
    int minValue; 
    /** 
    * Adds a house number to the address 
    * @param house house number 
    */ 
    public void addHouse(int house) 
    { 
     houses.add(house); 
    } 
    public ArrayList<Integer> getHouse() 
    { 
     return houses; 
    } 
    /** 
    * Adds a street name to the address 
    * @param street street name 
    */ 
    public void addStreet(String street) 
    { 
     streets.add(street); 
    } 
    public ArrayList<String> getStreet() 
    { 
     return streets; 
    } 
    /** 
    * constructor to add an apartment number that equals 0 
    */ 
    public void addApt() 
    { 

    } 
    /** 
    * Adds an apartment number to the address 
    * @param aptNbr apartment number 
    */ 
    public void addApt(int aptNbr) 
    { 
     apts.add(aptNbr); 
    } 
    public ArrayList<Integer> getAptNbrs() 
    { 
     return apts; 
    } 
    /** 
    * Adds a city to the address 
    * @param city city 
    */ 
    public void addCity(String city) 
    { 
     cities.add(city); 
    } 
    public ArrayList<String> getCity() 
    { 
     return cities; 
    } 
    /** 
    * Adds a state to the address 
    * @param state state 
    */ 
    public void addState(String state) 
    { 
     states.add(state); 
    } 
    public ArrayList<String> getState() 
    { 
     return states; 
    } 
    /** 
    * Adds a zip code to the address 
    * @param zip zip code 
    */ 
    public void addZip(int zip) 
    { 
     zips.add(zip); 
    } 
    public ArrayList<Integer> getZip() 
    { 
    return zips; 
    } 
    public int arrValue() 
    { 
     minValue = zips.indexOf(Collections.min(zips)); 
     return minValue; 
    } 
} 

Главная

package newchapter7; 
import java.util.*; 

public class NewChapter7 { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    Address addy = new Address(); 
    for (int i = 0; i < 3; i++) 
    { 
     System.out.print("Please enter a house number: "); 
     int house1 = in.nextInt(); 
     addy.houses.add(house1); 
     System.out.print("Please enter the street name: "); 
     String street1 = in.next(); 
     addy.streets.add(street1); 
     System.out.print("Please enter an apartment number if applicable: "); 
     int apartment; 
     apartment = in.nextInt(); 
     addy.apts.add(apartment); 
     if (apartment != 0) 
     { 
      addy.apts.add(apartment); 
     } 
     else 
     { 
      addy.apts.add(0); 
     } 
     System.out.print("Please enter the city name: "); 
     String city2 = in.nextLine(); 
     addy.cities.add(city2); 
     System.out.print("Please enter the state name: "); 
     String states2 = in.nextLine(); 
     addy.states.add(states2); 
     System.out.print("Please enter the zip code: "); 
     int zipC = in.nextInt(); 
     addy.zips.add(zipC); 
    } 


} 

} 

Это домашнее задание. Я думаю, что я немного запутал материал, и даже если это сработает, я хотел бы изучить более эффективный способ выполнить ту же задачу.

Ошибка

Please enter a house number: 772 
Please enter the street name: Apple Drive 
Exception in thread "main" java.util.InputMismatchException 
Please enter an apartment number if applicable:  
at java.util.Scanner.throwFor(Scanner.java:909) 
at java.util.Scanner.next(Scanner.java:1530) 
at java.util.Scanner.nextInt(Scanner.java:2160) 
at java.util.Scanner.nextInt(Scanner.java:2119) 
at newchapter7.NewChapter7.main(NewChapter7.java:32) 
Java Result: 1 
BUILD SUCCESSFUL (total time: 21 seconds) 

Назначение:

Реализовать класс Address. Адрес имеет номер дома, улицу, дополнительный номер квартиры, город, штат и почтовый индекс. Поставьте двух конструкторов: один с номером квартиры и один без. Поставьте метод печати, который печатает адрес с улицы на одной строке, а также город, штат и почтовый индекс на следующей строке. Поставка метода public boolean приходитBefore (Address other), который проверяет, идет ли этот адрес перед другим, когда адреса сравниваются почтовым кодом.

+0

Требуется, чтобы это переместилось в переполнение стека. – mbnew

+2

Если у вас есть ошибка или исключение, пожалуйста, сообщите нам все сообщение. –

+0

Реализация 'public int arrValue()' выглядит странно для меня. Зачем возвращать индекс? Вы не называете этот метод, хотя, возможно, его нужно полностью удалить? –

ответ

3

Класс вашего класса смешался и на самом деле кажется обратным для меня. Я думаю, что вам было бы намного лучше, если бы он представлял состояние одного. Если да, то он не должен содержать ArrayLists, а отдельные поля для одного дома с методами getter и setter для каждого поля, конструктор, который принимает параметры поля, и, возможно, конструктор по умолчанию, который при необходимости не принимает никаких параметров.

Тогда, если вам нужно работать со многими адресами, вы можете создать для этого ArrayList<Address>.

Обратите внимание, что в качестве стороннего варианта я бы не использовал int для номера квартиры или почтового индекса. Хотя они выглядят как цифры и содержат цифры чисел, они не ведут себя как числа. Вместо этого используйте String.

-1

изменение

String street1 = in.next(); 
    addy.streets.add(street1); 

линия

in.nextLine(); 
    String street1 = in.nextLine(); 
    addy.streets.add(street1); 

и другие next() к nextLine() также.

ОК, это предложение не работает, это полный рабочий код, но у вас есть Возможная ошибка. Так как это домашнее задание, вы должны решить это. Однако...

for (int i = 0; i < 3; i++) 
{ 
    System.out.print("Please enter a house number: "); 
    int house1 = in.nextInt(); 
    addy.houses.add(house1); 
    System.out.print("Please enter the street name: "); 
    in.nextLine(); 
    String street1 = in.nextLine(); 
    addy.streets.add(street1); 
    System.out.print("Please enter an apartment number if applicable: "); 
    int apartment; 
    apartment = in.nextInt(); 
    addy.apts.add(apartment); 
    if (apartment != 0) 
    { 
     addy.apts.add(apartment); 
    } 
    else 
    { 
     addy.apts.add(0); 
    } 
    System.out.print("Please enter the city name: "); 
    in.nextLine(); 
    String city2 = in.nextLine(); 
    addy.cities.add(city2); 
    System.out.print("Please enter the state name: "); 
    String states2 = in.nextLine(); 
    addy.states.add(states2); 
    System.out.print("Please enter the zip code: "); 
    int zipC = in.nextInt(); 
    addy.zips.add(zipC); 
} 
+0

@ downvoters, какого черта? Зачем? –

Смежные вопросы