首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >很难让用户选择从数组中的一行输出

很难让用户选择从数组中的一行输出
EN

Stack Overflow用户
提问于 2015-03-02 06:05:22
回答 2查看 706关注 0票数 0

我正在尝试一个程序,它接受用户的输入,并根据他们选择的状态输出相关的状态,鸟和花。目前,如果您运行它,它将打印出每个状态和相关信息。但是我尝试让它只打印出1行。任何帮助都是非常感谢的!

代码语言:javascript
复制
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);
        }

    }

}
EN

回答 2

Stack Overflow用户

发布于 2015-03-02 06:14:26

在这里使用String[][]可能不是最简单的答案,因为您必须遍历整个数组才能获得您正在寻找的状态。

但这就是解决方案:

代码语言:javascript
复制
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对象,您可以轻松地传递和使用这些对象,并且比那些可怕的二维数组更具可读性)。

代码语言:javascript
复制
     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 ...
         }
     }
票数 0
EN

Stack Overflow用户

发布于 2015-03-02 07:57:10

我找出了我做错了什么。不过还是要感谢大家的帮助

/*文件: StateBirdAndFlowerProgram。*作者: David Cline *日期:2015年2月28日*目的:获取用户输入并将其与数组进行比较,以收集适当的数据进行输出。*用户在希望退出时输入none。*/导入java.util.Scanner;

公共类StateBirdAndFlowerProgram {

代码语言:javascript
复制
 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

} //结束类

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28799704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档