java - 我应该如何使用用户输入存储多维数组中的数组
问题描述
是的,这是我的作业。但我被卡住了,已经好几天了。(可怕的老师,可怕的教训。这位老师永远不会回应我或任何人的任何事情)
我以前在这里看到过类似的东西,但从未见过或理解他们的答案。
在这个程序中,用户输入一个状态,然后它输出状态鸟和它的花。在用户输入 none 之后,它应该给他们一个他们连续输入的所有内容的摘要。国,鸟,花。我不知道该怎么做……你不必告诉我怎么做,那很好。但请你指导我,以一种非模糊的方式哈哈。
import java.util.Scanner;
public class TheStatesTester {
public static void main(String[] args) {
String theState [][] = {
{"Alabama", "Northern Flicker","Camelia"},
{"Alaska", "Willow PTarmigan","ForgetMeNot"},
{"Arizona", "Cactus Wren","Saguaro Cactus Blossom"},
{"Arkansas", "Mockingbird","Apple Blossom"},
{"California", "California Quail","California Blossom"},
{"Colorado", "Lark Bunting","Rocking Mountain Columbine"},
{"Connecticut", "American Robin","Mountain Laurel"},
{"Delaware", "Blue Hen Chicken","Peach Blossom"},
{"Flordia", "Mockingbird","Orange Blossom"},
{"Georgia", "Brown Thrasher","Cherokee Rose"},
{"Hawaii", "Nene","Hibiscus"},
{"Idaho", "Peregrine Falcon","Mock Orange"},
{"Illinois", " Northern Cardinal","Purple Violet"},
{"Indiana", "Northern Cardinal","Peony"},
{"Iowa", "Eastern Goldrinch","Wild Prairie Rose"},
{"Kansas", "Western Meadowlark","Sunflower"},
{"Kentucky", "Northen Cardinal","Golden Rod"},
{"Louisiana", "Brown Pelican","Magnolia"},
{"Maine", "Black-capped Chickadee","White Pine Tassel and Cone"},
{"Maryland", "Baltimore Oriole","Black-Eyes Susan"},
{"Massachusetts", "Black-Capped Chickadee","Mayflower"},
{"Michigan", "Robin Redbreast","Apple Blossom"},
{"Minnesota", "Common Loon","Pink and White ladyslipper"},
{"Mississippi", "Wood Duck","Magnolia"},
{"Missouri", "Eastern Bluebird","Hawthorn"},
{"Montana", "Western Meadowlark","Bitterroot"},
{"Nebraska", "Western Medowlark","Goldenrod"},
{"Nevada", "Mountain Bluebird","Sagebush"},
{"New Hampshire", "Purple Finch","Purple Lilac"},
{"New Jersey", "Eastern Goldfinch","Violet"},
{"New Mexico", "Roadrunner","Yucca"},
{"New York", "Bluebird","Rose"},
{"North Carolina", "Cardinal","Flowering Dogwood"},
{"North Dakota", "Western Meadowlark","Wild Prairie Rose"},
{"Ohio", "Cardinal","Scarlet Carnation"},
{"Oklahoma", "Scissor-tailed Flycatcher","Mistletoe"},
{"Oregon", "Western Medowlark","Orange Grape"},
{"Pennsylvania", "Ruffed Grouse","Mountain Laurel"},
{"Rhode Island", "Rhode Island Red","Violet"},
{"South Carolina", "Great Carolina Wren","Yellow Jessamine"},
{"South Dakota", "Ring-necked Pheasant","Pasque Flower"},
{"Tennessee", "Mocking Bird","Iris"},
{"Texas", "Mocking Bird","Texas Bluebonnet"},
{"Utah", "Common American Gull","Sego Lily"},
{"Vermont", "Hermit Thrush","Red Clover"},
{"Virginia", "Cardinal","Flowering Dogwood"},
{"Washington", "Willow Goldfinch","Coast Rhodoendron"},
{"West Virginia", "Cardinal","Rhododendron"},
{"Wisconsin", "Robin","Violet"},
{"Wyoming", "Western Medowlark","Indian Paintbrush"},
};
Scanner input1 = new Scanner(System.in);
while (true) {
System.out.println("Enter a State or None to exit: ");
String states = input1.nextLine();
int position=getBirdFlower(theState, states);
if (states.trim().equalsIgnoreCase("None")){
System.out.println("**** Thank you *****\r\n" +
"A summary report for each State, Bird, and Flower is: " );
break;
}
else {
if(position!=-1)
{
System.out.println("Bird: "+theState[position][1]);
System.out.println("Flower: "+theState[position][2]);
}
else
System.out.println("Invalid state entered");
// for (int i=0; i<state.length;i)
// for (int j=0;j<state[i].length;j)
// System.out.println(state[i][j]);
}
}
}
public static int getBirdFlower(String theState[][], String state)
{
int position = -1;
boolean found=false;
for (int index = 0; index < theState.length && !found; index++)
{
if(theState[index][0].equalsIgnoreCase(state))
position = index;
}
return position;
}
}
解决方案
我在您的代码中添加了一些注释以便清楚地理解。请仔细阅读。
import java.util.ArrayList;
import java.util.Scanner;
public class TheStatesTester {
public static void main(String[] args) {
String theState[][] = {
{"Alabama", "Northern Flicker", "Camelia"},
{"Alaska", "Willow PTarmigan", "ForgetMeNot"},
{"Arizona", "Cactus Wren", "Saguaro Cactus Blossom"},
{"Arkansas", "Mockingbird", "Apple Blossom"},
{"California", "California Quail", "California Blossom"},
{"Colorado", "Lark Bunting", "Rocking Mountain Columbine"},
{"Connecticut", "American Robin", "Mountain Laurel"},
{"Delaware", "Blue Hen Chicken", "Peach Blossom"},
{"Flordia", "Mockingbird", "Orange Blossom"},
{"Georgia", "Brown Thrasher", "Cherokee Rose"},
{"Hawaii", "Nene", "Hibiscus"},
{"Idaho", "Peregrine Falcon", "Mock Orange"},
{"Illinois", " Northern Cardinal", "Purple Violet"},
{"Indiana", "Northern Cardinal", "Peony"},
{"Iowa", "Eastern Goldrinch", "Wild Prairie Rose"},
{"Kansas", "Western Meadowlark", "Sunflower"},
{"Kentucky", "Northen Cardinal", "Golden Rod"},
{"Louisiana", "Brown Pelican", "Magnolia"},
{"Maine", "Black-capped Chickadee", "White Pine Tassel and Cone"},
{"Maryland", "Baltimore Oriole", "Black-Eyes Susan"},
{"Massachusetts", "Black-Capped Chickadee", "Mayflower"},
{"Michigan", "Robin Redbreast", "Apple Blossom"},
{"Minnesota", "Common Loon", "Pink and White ladyslipper"},
{"Mississippi", "Wood Duck", "Magnolia"},
{"Missouri", "Eastern Bluebird", "Hawthorn"},
{"Montana", "Western Meadowlark", "Bitterroot"},
{"Nebraska", "Western Medowlark", "Goldenrod"},
{"Nevada", "Mountain Bluebird", "Sagebush"},
{"New Hampshire", "Purple Finch", "Purple Lilac"},
{"New Jersey", "Eastern Goldfinch", "Violet"},
{"New Mexico", "Roadrunner", "Yucca"},
{"New York", "Bluebird", "Rose"},
{"North Carolina", "Cardinal", "Flowering Dogwood"},
{"North Dakota", "Western Meadowlark", "Wild Prairie Rose"},
{"Ohio", "Cardinal", "Scarlet Carnation"},
{"Oklahoma", "Scissor-tailed Flycatcher", "Mistletoe"},
{"Oregon", "Western Medowlark", "Orange Grape"},
{"Pennsylvania", "Ruffed Grouse", "Mountain Laurel"},
{"Rhode Island", "Rhode Island Red", "Violet"},
{"South Carolina", "Great Carolina Wren", "Yellow Jessamine"},
{"South Dakota", "Ring-necked Pheasant", "Pasque Flower"},
{"Tennessee", "Mocking Bird", "Iris"},
{"Texas", "Mocking Bird", "Texas Bluebonnet"},
{"Utah", "Common American Gull", "Sego Lily"},
{"Vermont", "Hermit Thrush", "Red Clover"},
{"Virginia", "Cardinal", "Flowering Dogwood"},
{"Washington", "Willow Goldfinch", "Coast Rhodoendron"},
{"West Virginia", "Cardinal", "Rhododendron"},
{"Wisconsin", "Robin", "Violet"},
{"Wyoming", "Western Medowlark", "Indian Paintbrush"},
};
Scanner input1 = new Scanner(System.in);
ArrayList<String> userInputStates = new ArrayList<>();
while (true) {
System.out.println("Enter a State or None to exit: ");
String states = input1.nextLine();
if (states.trim().equalsIgnoreCase("None")) {
System.out.println("**** Thank you *****\r\n" +
"A summary report for each State, Bird, and Flower is: ");
//printing the userList
printUserList(userInputStates);
break;
} else {
//I moved this getBirdFlower method call to heere, because if not none , call from here
int position = getBirdFlower(theState, states);
if (position != -1) {
System.out.println("Bird: " + theState[position][1]);
System.out.println("Flower: " + theState[position][2]);
//Add user's found properties to arrayList.
userInputStates.add("- State: " + theState[position][0] + " Bird: " + theState[position][1] + " Flower: " + theState[position][2]);
} else
System.out.println("Invalid state entered");
}
}
}
private static void printUserList(ArrayList<String> userInputStates) {
//print userInputStates.
for (String userState : userInputStates) {
System.out.println(userState);
}
}
public static int getBirdFlower(String theState[][], String state) {
//you dont need to keep boolean , if found -> return current index
for (int index = 0; index < theState.length; index++) {
if (theState[index][0].equalsIgnoreCase(state))
return index;
}
//if not found, return -1
return -1;
}
}
代码的示例输出;
Enter a State or None to exit: Wyoming Bird: Western Medowlark Flower: Indian Paintbrush Enter a State or None to exit: Utah Bird: Common American Gull Flower: Sego Lily Enter a State or None to exit: InvalidState Invalid state entered Enter a State or None to exit: none **** Thank you ***** A summary report for each State, Bird, and Flower is: - State: Wyoming Bird: Western Medowlark Flower: Indian Paintbrush - State: Utah Bird: Common American Gull Flower: Sego Lily
推荐阅读
- asp.net - Identity 如何在项目模板中使用 ASP.NET Core MVC 3.1 的个人用户帐户工作?
- javascript - 如何使用 animate.css 动画平滑交换两个元素(弹回旧元素,弹回新元素)
- javascript - 有没有办法可以从左声道或右声道播放视频音频?
- firebase - Firestore 中的拍卖/出价:处理并发写入
- amazon-web-services - 明确告诉 Ansible 使用不同的凭据集
- c++ - 比较两个没有 strcmp() 和运算符重载的 c 样式字符串
- mysql - MySQL“查询数据包太大”,查询长度完全匹配`max_allowed_packet`
- javascript - 我需要将 [data:post.url] 的值嵌入 [onclick=" location.href = '#' "]
- cron - 尽管 cron 作业正在运行,但未调用 TYPO3 调度程序
- vue.js - Vue: how to set the focus on an input field