我正在尝试一个程序,它接受用户的输入,并根据他们选择的状态输出相关的状态,鸟和花。目前,如果您运行它,它将打印出每个状态和相关信息。但是我尝试让它只打印出1行。任何帮助都是非常感谢的!
import java.util.Arrays;
import java.util.Scanner;
public class StateBirdAndFlower {
private static String state = new String();
private static final Scanner sc = new Scanner(System.in);
private static final String[][] fsAndBs = {
{"Alabama", "Flower: Camelia", "Bird: Northern flicker"},
{"Alaska", "Flower: Forget-me-not", "Bird: Willow ptarmigan "},
{"Arizona", "Flower: Saguaro cactus blossom", "Bird: Cactus wren "},
{"Arkansas", "Flower: Apple blossom", "Bird: Northern mockingbird "},
{"Califorina", "Flower: Califorina poppy", "Bird: California quail"},
{"Colorado", "Flower: Rocky Mountian columbine", "Bird: Lark bunting"},
{"Connecticut", "Flower: Mountain laurel ", "Bird: American robin"},
{"Delaware", "Flower: Peach blossom", "Bird: Delaware Blue Hen "},
{"Florida", "Flower: Orange blossom ", "Bird: Northern mockingbird "},
{"Georgia", "Flower: Cherokee rose ", "Bird: Brown thrasher ", },
{"Hawaii", "Flower: Hawaiian hibiscus ", "Bird: Nēnē or Hawaiian goose"},
{"Idaho", "Flower: Syringa, mock orange ", "Bird: Mountain bluebird "},
{"Illinois", "Flower: Violet ", "Bird: Northern cardinal "},
{"Indiana", "Flower: Peony ", "Bird: Northern cardinal "},
{"Iowa ", "Flower: Wild prairie rose ", "Bird: Eastern goldfinch "},
{"Kansas", "Flower: Sunflower", "Bird: Western meadowlark"},
{"Kentucky", "Flower: Goldenrod ", "Bird: Northern cardinal"},
{"Louisiana", "Flower: Magnolia ", "Bird: Brown pelican "},
{"Maine", "Flower: White pine cone and tassel ", "Bird: Black-capped "
+ "chickadee "},
{"Maryland", "Flower: Black-eyed susan ", "Bird: Baltimore oriole"},
{"Massachusetts", "Flower: Mayflower ", "Bird: Black-capped chickadee "},
{"Michigan", "Flower: Apple blossom", "Bird: American robin "},
{"Minnesota", "Flower:Pink and white lady's slipper ","Bird: Common loon"},
{"Mississippi", "Flower: Magnolia", "Bird: Northern mockingbird "},
{"Missouri", "Flower: Hawthorn", "Bird: Eastern bluebird "},
{"Montana", "Flower: Bitterroot ", "Bird: Western meadowlark "},
{"Nebraska", "Flower: Goldenrod", "Bird: Western meadowlark"},
{"Nevada", "Flower: Sagebrush ", "Bird: Mountain bluebird "},
{"New Hampshire ", "Flower: Purple lilac ", "Bird: Purple finch "},
{"New Jersey", "Flower: Violet ", "Bird: Eastern goldfinch "},
{"New Mexico", "Flower: Yucca flower", "Bird: Roadrunner "},
{"New York", "Flower: Rose", "Bird: Eastern bluebird "},
{"North Carolina", "Flower: Flowering dogwood", "Bird: Northern cardinal "},
{"North Dakota", "Flower: Wild prairie rose ", "Bird: Western meadowlark "},
{"Ohio", "Flower: carlet carnation ", "Bird Northern cardinal: "},
{"Oklahoma", "Flower: Oklahoma rose ", "Bird: Scissor-tailed flycatcher "},
{"Oregon", "Flower: Oregon grape ", "Bird: Western meadowlark "},
{"Pennsylvania", "Flower: Mountain laurel", "Bird: Ruffed grouse"},
{"Rhode Island", "Flower: Violet", "Bird: Rhode Island Red "},
{"South Carolina", "Flower: Yellow jessamine ","Bird: Carolina wren", },
{"South Dakota ", "Flower: Pasque flower ", "Bird: Ring-necked pheasant"},
{"Tennessee", "Flower: Iris", "Bird: Northern mockingbird ",},
{"Texas", "Flower: Bluebonnet sp. ", "Bird: Northern mockingbird "},
{"Utah", "Flower: Sego lily", "Bird: California gull "},
{"Vermont", "Flower: Red clover ", "Bird: Hermit thrush"},
{"Virginia", "Flower: American dogwood", "Bird: Northern cardinal"},
{"Washington", "Flower: Coast rhododendron", "Bird: Willow goldfinch "},
{"West Virginia", "Flower:Rhododendron", "Bird: Northern cardinal "},
{"Wisconsin", "Flower: Wood violet ", "Bird: American robin "},
{"Wyoming", "Flower: Indian paintbrush ", "Bird: Western meadowlark "}};
public static void main(String[] args) {
for(int rows = 0; rows < fsAndBs.length; rows++) {
System.out.println("");
for(int col = 0; col < fsAndBs[col].length; col++) {
System.out.println(fsAndBs[rows][col] + " ");
}
}
do {
System.out.println("Enter a State or None to Exit");
state = sc.next();
} while (!state.equalsIgnoreCase("none"));
if (state.equalsIgnoreCase("none")) {
System.out.println("goodbye");
System.exit(0);
}
}
}发布于 2015-03-02 06:14:26
在这里使用String[][]可能不是最简单的答案,因为您必须遍历整个数组才能获得您正在寻找的状态。
但这就是解决方案:
private String[] getState(String input){
for(String [] state: fsAndBs){
if(state[0].equalsIgnoreCase(input){
return state;
}
}
// return null if input is not a valid state
return null;
}然后只需将String [] stateValues = getState(state)添加到您的main中。
更多的OO解决方案如下所示(它更冗长,但提供了State对象,您可以轻松地传递和使用这些对象,并且比那些可怕的二维数组更具可读性)。
public class StateBirdAndFlower {
private static class State {
private final String name;
private final String bird;
private final String flower;
State(String name, String bird, String flower) {
this.name = name;
this.bird = bird;
this.flower = flower;
}
public String getName() {
return name;
}
public String getBird() {
return bird;
}
public String getFlower() {
return flower;
}
}
private static String stateName = new String();
private static final Scanner sc = new Scanner(System.in);
private static Map<String, State> statesMap = new HashMap<String, State>();
public static void main() {
setupMap();
// ... your other code ...
do{
System.out.println("Enter a State or None to Exit");
stateName = sc.next();
State state = statesMap.get(stateName.toLowerCase());
// ... do your thing with the state ...
} while (!stateName.equalsIgnoreCase("none"));
// .. the rest of your code here
}
private static void setupMap() {
// set up a map entry for each state
State ala = new State("Alabama","Camelia","Northern flicker");
statesMap.put(ala.getName().toLowerCase(), ala);
State alas = new State("Alaska","Forget-me-not","Willow ptarmigan");
statesMap.put(alas.getName().toLowerCase(), alas);
// ... etc ...
}
}发布于 2015-03-02 07:57:10
我找出了我做错了什么。不过还是要感谢大家的帮助
/*文件: StateBirdAndFlowerProgram。*作者: David Cline *日期:2015年2月28日*目的:获取用户输入并将其与数组进行比较,以收集适当的数据进行输出。*用户在希望退出时输入none。*/导入java.util.Scanner;
公共类StateBirdAndFlowerProgram {
public static void main(String args[]) {
// Begin Scanner for user input later on
Scanner input = new Scanner( System.in );
//Begin array of information
String[][] states={
{"Alabama", "Flower: Camelia", "Bird: Northern flicker"},
{"Alaska", "Flower: Forget-me-not", "Bird: Willow ptarmigan "},
{"Arizona", "Flower: Saguaro cactus blossom", "Bird: Cactus wren "},
{"Arkansas", "Flower: Apple blossom", "Bird: Northern mockingbird "},
{"Califorina", "Flower: Califorina poppy", "Bird: California quail"},
{"Colorado", "Flower: Rocky Mountian columbine", "Bird: Lark bunting"},
{"Connecticut", "Flower: Mountain laurel ", "Bird: American robin"},
{"Delaware", "Flower: Peach blossom", "Bird: Delaware Blue Hen "},
{"Florida", "Flower: Orange blossom ", "Bird: Northern mockingbird "},
{"Georgia", "Flower: Cherokee rose ", "Bird: Brown thrasher ", },
{"Hawaii", "Flower: Hawaiian hibiscus ", "Bird: Nēnē or Hawaiian goose"},
{"Idaho", "Flower: Syringa, mock orange ", "Bird: Mountain bluebird "},
{"Illinois", "Flower: Violet ", "Bird: Northern cardinal "},
{"Indiana", "Flower: Peony ", "Bird: Northern cardinal "},
{"Iowa ", "Flower: Wild prairie rose ", "Bird: Eastern goldfinch "},
{"Kansas", "Flower: Sunflower", "Bird: Western meadowlark"},
{"Kentucky", "Flower: Goldenrod ", "Bird: Northern cardinal"},
{"Louisiana", "Flower: Magnolia ", "Bird: Brown pelican "},
{"Maine", "Flower: White pine cone and tassel ", "Bird: Black-capped chickadee "},
{"Maryland", "Flower: Black-eyed susan ", "Bird: Baltimore oriole"},
{"Massachusetts", "Flower: Mayflower ", "Bird: Black-capped chickadee "},
{"Michigan", "Flower: Apple blossom", "Bird: American robin "},
{"Minnesota", "Flower:Pink and white lady's slipper ","Bird: Common loon"},
{"Mississippi", "Flower: Magnolia", "Bird: Northern mockingbird "},
{"Missouri", "Flower: Hawthorn", "Bird: Eastern bluebird "},
{"Montana", "Flower: Bitterroot ", "Bird: Western meadowlark "},
{"Nebraska", "Flower: Goldenrod", "Bird: Western meadowlark"},
{"Nevada", "Flower: Sagebrush ", "Bird: Mountain bluebird "},
{"New Hampshire ", "Flower: Purple lilac ", "Bird: Purple finch "},
{"New Jersey", "Flower: Violet ", "Bird: Eastern goldfinch "},
{"New Mexico", "Flower: Yucca flower", "Bird: Roadrunner "},
{"New York", "Flower: Rose", "Bird: Eastern bluebird "},
{"North Carolina", "Flower: Flowering dogwood", "Bird: Northern cardinal "},
{"North Dakota", "Flower: Wild prairie rose ", "Bird: Western meadowlark "},
{"Ohio", "Flower: carlet carnation ", "Bird Northern cardinal: "},
{"Oklahoma", "Flower: Oklahoma rose ", "Bird: Scissor-tailed flycatcher "},
{"Oregon", "Flower: Oregon grape ", "Bird: Western meadowlark "},
{"Pennsylvania", "Flower: Mountain laurel", "Bird: Ruffed grouse"},
{"Rhode Island", "Flower: Violet", "Bird: Rhode Island Red "},
{"South Carolina", "Flower: Yellow jessamine ","Bird: Carolina wren", },
{"South Dakota ", "Flower: Pasque flower ", "Bird: Ring-necked pheasant"},
{"Tennessee", "Flower: Iris", "Bird: Northern mockingbird ",},
{"Texas", "Flower: Bluebonnet sp. ", "Bird: Northern mockingbird "},
{"Utah", "Flower: Sego lily", "Bird: California gull "},
{"Vermont", "Flower: Red clover ", "Bird: Hermit thrush"},
{"Virginia", "Flower: American dogwood", "Bird: Northern cardinal"},
{"Washington", "Flower: Coast rhododendron", "Bird: Willow goldfinch "},
{"West Virginia", "Flower:Rhododendron", "Bird: Northern cardinal "},
{"Wisconsin", "Flower: Wood violet ", "Bird: American robin "},
{"Wyoming", "Flower: Indian paintbrush ", "Bird: Western meadowlark "}};
// While loop to search through array
while(true) {
// Request user input
System.out.println("Enter a state: ");
// Capture user input
String stateName =input.nextLine();
// exit statement
if(stateName.equalsIgnoreCase("None"))
// Exit program
System.exit(0);
else {
// For loop to search through array
for(int row=0,column=0;row<states.length;row++) {
// If statement for matching input string to array data
if(states[row][0].equalsIgnoreCase(stateName)) {
// Print bird information
System.out.println("Bird: " + states[row][column+1]);
// Print Flower information
System.out.println("Flower: " + states[row][column+2] + "\n");
} // end if
} // end for
} // end else
} // end while
} // end main} //结束类
https://stackoverflow.com/questions/28799704
复制相似问题