java - 我应该如何使用用户输入存储多维数组中的数组

标签 java

是的,这是我的作业。但我被困住了,已经好几天了。 (可怕的老师,可怕的教训。这位老师永远不会回应我或任何人的任何事情)

我以前在这里见过类似的东西,但从未见过或理解他们的答案。

在这个程序中,用户输入一个状态,然后输出状态鸟和它的花。当用户不输入任何内容后,它应该为他们提供连续输入的所有内容的摘要。州、鸟、花。 我不知道如何做到这一点......你不必告诉我怎么做,那很好。但你能以一种明确的方式指导我吗,哈哈。

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

关于java - 我应该如何使用用户输入存储多维数组中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52674159/

相关文章:

java - FragmentTransaction 中的 add() 无法应用?

java - 使用 Lucene 的正则表达式反向搜索

java - 显示带有 s :iterator in Struts 2 的表

java - 启动画面结束后应用程序不断崩溃

java - 将值设置为 sam 对象时替换列表值

java - 在 Mongodb 中更新列表的最佳方法

java - android.widget.RelativeLayout 无法转换为 androidx.drawerlayout.widget.DrawerLayout

java - Android:在 ListView 中将整数读取为字符串

java - 使用链表构建最小最大堆栈

java - 需要一个简单的开源解决方案将二维表格数据导出为PDF和Word格式