java - 打印用户输入/多维数组

标签 java if-statement multidimensional-array

如果这是一个重复的问题,我深表歉意。我不知道要寻找什么。

这是一项作业,所以我真的希望朝着正确的方向前进,而不是仅仅得到答案。该代码是重复要求用户输入州名,返回州鸟和州花。一旦用户输入“无”,就会打印出一个摘要,其中包含用户输入的每个州的州、鸟和花。目前,摘要仅打印用户输入的最后状态的信息。

对于工作的马虎,我深表歉意。我才刚刚开始学习!

public class StateInformation {

    private String[][] stateInfo =  {
        {"Alabama", "Yellowhammer", "Camellia"},
        {"Alaska", "Willow Ptarmigan", "Alpine Forget-Me-Not"},
        {"Arizona" , "Cactus Wren", "Saguaro Cactus Blossom"},
        {"Arkansas", "Northern Mockingbird", "Apple Blossom"},
        {"California", "California Quail", "California Poppy"},
        {"Colorado", "Lark Bunting", "Rocky Mountain Columbine"},
        {"Connecticut", "American Robin", "Mountain Laurel"},
        {"Delaware", "Blue Hen Chicken", "Peach Blossom"},
        {"Florida", "Northern Mockingbird", "Orange Blossom"},
        {"Georgia", "Brown Thrasher", "Cherokee Rose"},
        {"Hawaii", "Nene", "{Pua Aloalo"},
        {"Idaho", "Mountain Bluebird", "Syringa"},
        {"Illinois", "Greater Prairie-Chicken", "Violet"},
        {"Indiana", "Northern Cardinal", "Peony"},
        {"Iowa", "Eastern Goldfinch", "Wild Rose"},
        {"Kansas", "Weatern Meadowlark", "Wild Native Sunflower"},
        {"Kentucky", "Northern Cardinal", "Goldenrod"},
        {"Louisana", "Brown Pelican", "Louisana Iris"},
        {"Maine", "Black-Capped Chickadee", "White Pine Cone and Tassel"},
        {"Maryland", "Baltimore Oriole", "Black-Eyed Susan"},
        {"Massachusetts", "Black-Capped Chickadee", "Mayflower"},
        {"Michigan", "American Robin", "Apple Blossom"},
        {"Minnesota", "Common Loon", "Pink and White Lady Slipper"},
        {"Mississippi", "Northern Mockingbird", "Magnolia"},
        {"Missouri", "Eastern Bluebird", "White Hawthorn Blossom"},
        {"Montana", "Western Meadowlark", "Bitterroot"},
        {"Nebraska", "Western Meadowlark", "Goldenrod"},
        {"Neveda", "Mountain Bluebird", "Sagebrush"},
        {"New Hampshire", "Purple Finch", "Pink Lady's Slipper"},
        {"New Jersey", "Eastern Goldfinch", "Violet"},
        {"New Mexico", "Greater Roadrunner", "Yucca"},
        {"New York", "Eastern Bluebird", "Rose"},
        {"North Carolina", "Northern Cardinal", "Dogwood"},
        {"North Dakota", "Western Meadowlark", "Wild Prairie Rose"},
        {"Ohio", "Northern Cardinal", "White Trillium"},
        {"Oklahoma", "Scissor-Tailed Flycatcher", "Mistletoe"},
        {"Oregon", "Western Meadowlark", "Oregon Grape"},
        {"Pennslyvania", "Ruffed Grouse", "Mountain Laurel"},
        {"Rhode Island", "Rhode Island Red Chicken", "Violet"},
        {"South Carolina", "Carolina Wren", "Yellow Jessamine"},
        {"South Dakota", "Ring-necked Pheasant", "American Pasque"},
        {"Tennessee", "Northern Mockingbird", "Passion Flower"},
        {"Texas", "Northern Mockingbird", "Ennis"},
        {"Utah", "California Gull", "Sego Lily"},
        {"Vermont", "Hermit Thrush", "Red Clover"},
        {"Virginia", "Northern Cardinal", "American Dogwood"},
        {"Washington", "Willow Goldfinch", "Coast Rhododendron"},
        {"West Virginia", "Northern Cardinal", "Rhododendron"},
        {"Wisconsin", "American Robin", "Wood Violet"},
        {"Wyoming", "Western Meadowlark", "Indian Paintbrush"},
    };//End array initialization

    public StateInformation() {
    }

    public String[][] getStateInfo(){
       return stateInfo;
    }

    public void setState(String[][] state) {
        this.stateInfo = stateInfo;
    }
}
//End of Class

这是第二堂课:

//Second Class
import java.util.Scanner;

public class TestStateInformation {
    public static void main(String [] args) {

        StateInformation states = new StateInformation();   
        String [][] state = states.getStateInfo();  

        //Inserting scanner & variable. 
        Scanner scanner = new Scanner(System.in);

        while(true) {
            //Prompt the user to input a state name.  
            System.out.println("Please enter a state or None to exit: ");
            //Read the state entered by user, including leading/trailing white spaces.
            String stateInfo = scanner.nextLine();

            //If loop to end if None is entered.
            if (stateInfo.equalsIgnoreCase("None")) {
                break;
            } else {
                int position = getStatePosition(state, stateInfo);

                if (position != -1) {
                    System.out.println("Bird: " 
                                    + getBird(position, state) 
                                    +'\n' + "Flower: " 
                                    + getFlower(position, state) + '\n');
                }

                if ((scanner.nextLine().equals("None"))) {
                        System.out.println("***** Thank you! *****" + '\n' 
                            + "A summary report for each State, Bird, and Flower is: "
                            + '\n' + getState(position, state)+ ", "
                            + getBird(position, state) + ", "+ getFlower(position, state)
                            + '\n' + "Please visit our site again!");
                }//end if loop for printing bird and flower of state entered by user.
            }//End else loop
        }//end if loop
    }//end while loop


    private static int getStatePosition(String state[][], String stateInfo) {
        for (int i = 0; i < state.length; i++) {
            if (stateInfo.equalsIgnoreCase(state[i][0])) {
                return i;
            }
        }
        return -1;
    }

    //Creates the position of the state name into [0]
    private static String getState(int position, String [][] state) {
        return state[position][0];  
    }

    //Creates the position of the state bird into [1].
    private static String getBird(int position, String [][] state) {
        return state[position][1];
    }

    //Creates the position of the state bird into [2]
    private static String getFlower(int position, String [][] state) {
        return state[position][2];
    }
}

最佳答案

要获取 Activity 摘要,您必须将每个状态存储在集合中。这里使用 Set 来避免重复。
显示存储在 Set 中的每个状态的示例代码,然后迭代该 Set,如下所示:

public class TestStateInformation {
public static void main(String[] args) {

    StateInformation states = new StateInformation();
    String[][] state = states.getStateInfo();
    // Inserting scanner & variable.
    Scanner scanner = new Scanner(System.in);
    Set<Integer> positions = new HashSet<Integer>();

    while (true) {
        // Prompt the user to input a state name.
        System.out.println("Please enter a state or None to exit: ");
        // Read the state entered by user, including leading/trailing white
        // spaces.
        String stateInfo = scanner.nextLine();

        // If loop to end if None is entered.
        if (stateInfo.equalsIgnoreCase("None")) {
            System.out.println(
                    "***** Thank you! *****" + '\n' + "A summary report for each State, Bird, and Flower is: \n");

            for (Integer p : positions) {
                System.out.println(getState(p, state) + ", " + getBird(p, state) + ", " + getFlower(p, state)
                                + '\n');
            }
            System.out.println("Please visit our site again!");
            break;
        } else {
            int position = getStatePosition(state, stateInfo);
            if (position != -1) {
                positions.add(position);
                System.out.println("New size=" + positions.size());
                System.out.println("Bird: " + getBird(position, state) + '\n' + "Flower: "
                        + getFlower(position, state) + '\n');
            }
        }
    }
}// end while loop

带有示例输出:

***** Thank you! *****
A summary report for each State, Bird, and Flower is: 

Alaska, Willow Ptarmigan, Alpine Forget-Me-Not

California, California Quail, California Poppy

Florida, Northern Mockingbird, Orange Blossom

Please visit our site again!

关于java - 打印用户输入/多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48979402/

相关文章:

javascript - 如何在javascript中的do-while循环中嵌套if语句

c - 在 C 中使用 char 数组作为二维数组

java - 使用 OpenCV 进行椭圆检测

java - 无法加载 jar - "zip file is empty"

java - 使用 SOAP 响应始终为 null Spring Boot

javascript - 如果还有其他故障排除

java - 如何在 OpenXava 中创建下拉列表?

c++ - 检查参数是否为空或不相同

php - 多维数组中的 array_unshift 在所有数组的第一个元素处插入

java - 从 JNI/NDK 将二维原始数组从 C 返回到 Java