Вот мои требования:
Создайте (жестко запрограммированные) 50 штатов и их столицы, используя двухмерный массив.
В диалоговом окне: попросите пользователя ввести штат или город.
Если государство введено, найдите его столицу. Войдя в город, найдите его состояние.
Если нет, то выдается сообщение об ошибке.
Это должно быть в цикле, пока пользователь не перестанет играть.
Я действительно не знаю, с чего начать, все, что я сделал до сих пор, это создал массив, я действительно не понимаю, как искать в массиве и выплевывать соответствующее состояние / капитал.
Любая помощь будет принята с благодарностью.
Вот код, который я написал до сих пор.
import java.util.Scanner;
public class GuessStates {
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
String[][] statesAndCapitols = {
{"Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"},
{"Montgomery","Juneau","Phoenix","Little Rock","Sacramento","Denver","Hartford","Dover","Tallahassee","Atlanta","Honolulu","Boise","Springfield","Indianapolis","Des Moines","Topeka","Frankfort","Baton Rouge","Augusta","Annapolis","Boston","Lansing","St. Paul","Jackson","Jefferson City","Helena","Lincoln","Carson City","Concord","Trenton","Santa Fe","Albany","Raleigh","Bismarck","Columbus","Oklahoma City","Salem","Harrisburg","Providence","Columbia","Pierre","Nashville","Austin","Salt Lake City","Montpelier","Richmond","Olympia","Charleston","Madison","Cheyenne"}};
System.out.println("Please enter a State or a capitol city.");
String userInput = input.nextLine();
}
}
Спасибо еще раз!
2 ответа
Попробуйте выполнить поиск в массиве с помощью цикла for.
Используя цикл for, он отслеживает и обновляет вашу текущую позицию обхода массива.
Как только вы найдете правильное состояние или заглавную букву (проверив, есть ли userInput.equalsIgnoreCase (StatesAndCapitols [x] [y]), затем выберите текущую позицию, в которой вы находитесь, и получите необходимую информацию.
И.Е.
for(int x = 0; x < 2; ++x) //loop through states the first time, capitols the second
for(int y = 0; y < 50; ++y) //always 50, unless new states get added (obviously not a problem in this example, but useful to think about in future problems - YOUR DATA WILL ALMOST ALWAYS CHANGE.
if(userInput.equalsIgnoreCase(statesAndCapitols[x][y])
System.out.println(statesAndCapitols[x == 1 ? 0 : 1][y]);
В массиве я сделал x == 1? 0: 1. Это тернарный оператор, он означает, что если x равно 1, используйте значение 0, в противном случае используйте значение 1.
Это один из способов решить эту проблему.
Другой способ - создать свой собственный класс / тип данных для городов и штатов, при этом вам не нужно поддерживать синхронизацию массивов, то есть вам не нужно обновлять 2 элемента для одного. изменить (например, добавить еще одну комбинацию города / штата).
Надеюсь это немного поможет! :)
String entered_state=input.nextLine();
for(int i=0;i<50;i++){
if(statesAndCapitols[0][i].equals(entered_state)){
String searched_city=statesAndCapitols[1][i];
//print the city name
break;
}
}
if(i==50)
//print error
То же самое для поиска состояния из введенного города.
statesAndCapitols[0][i]
и statesAndCapitols[1][i]
.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.