簡體   English   中英

Java:從數組中獲取字符輸入會導致無限循環

[英]Java: taking char input from array results in infinite loop

這是我要解決的問題的鏈接: https : //dmoj.ca/problem/dmopc14c1p5

這是我為輸入輸入編寫的代碼。

public static void main(String[] args) 
    {
        Scanner kbd = new Scanner(System.in);

        int y = kbd.nextInt(); //number of rows
        int x = kbd.nextInt(); //number of columns
        int initX = kbd.nextInt(); //initial starting position
        int initY = kbd.nextInt();
        int endX = kbd.nextInt(); //ending position (main office)
        int endY = kbd.nextInt();

        char [] [] maze = new char [y][x];

        for (int i = 0; i < y; i++)
        {
            for (int j = 0; j < x; j++)
            {
                maze[i][j] = kbd.next().charAt(0);
            }
        }

        //For checking
        for (int i = 0; i < y; i++)
        {
            for (int j = 0; j < x; j++)
            {
                System.out.print(maze[i][j]);
            }
            System.out.println();
        }


    }

但是,我不知道如何在for循環中正確接收char輸入。 我使用通過此鏈接找到的scanner.next()。charAt(0)方法( 如何在Java中獲取“ char”數組的輸入? ),但是它導致無限循環,無論有多少個字符都不會結束我輸入。

我究竟做錯了什么?

更新:

這是我將收到的輸入(字符之間沒有空格):

OOXOO
OXOXO
OOOXX
XOXOX
OOOOO

我應該如何修改我的代碼以使閱讀此輸入成為可能?

您的代碼正常工作。 只需記住,您需要輸入至少x * y(您的變量名稱)次的char。

編輯:我剛剛看到您的更新。 我們需要考慮一下。

.charAt(0)

僅采用字符串的第一個字符並返回它。 如果要使用“ ooxoo”並將其轉換為['o','o','x','o','o'],則可以對字符串使用toCharArray方法。 但是,如果執行此操作,則for循環的循環時間將超過所需的循環時間。 如果您知道自己的輸入集,則只能遍歷n個字符串並接受它們並將它們轉換為數組。 如果您要我提供更多詳細信息,請告訴我。

java.util.Scanner.next()方法從此掃描器中查找並返回下一個完整的令牌。

每次調用kbd.next()。charAt(0)時,都調用next()並獲得完整的令牌。 默認情況下,標記由空格分隔。

您還需要在System.in提供數據之前按ENTER。

因此,輸入用空格分隔的字符,並以回車符結束輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM