簡體   English   中英

Java 打印“null”,同時使用 Scanner 將字符串數組作為用戶的輸入並突然結束

[英]Java prints “null” while taking in array of strings as input from the user using Scanner and ends abruptly

import java.util.Scanner;
class ArrayofArrays {
    public static void main(String[] args) {
        String[][] ListofNames = {
            {"barbie","cinderella","troomtroom"},
            {"wonderwoman","captainmarvel","Cheetah"}
        };
        for(String[] i : ListofNames) {
            for(String x: i) {
                System.out.println(x);
            }
        }
        int r,c;
        Scanner obj = new Scanner(System.in);
        System.out.println("Enter rows\n");
        r = obj.nextInt();
        System.out.println("Enter columns\n");
        c = obj.nextInt();
        String[][] Inputnames = new String[r][c];
        for(int j = 0;j<r;j++) {
            for(int l = 0;l<c;l++) {
                System.out.println("Enter name\n");
                Inputnames[j][l] = obj.nextLine();
            }
        for(int m = 0;m<r;m++) {
            for(int n = 0;n<c;n++) {
                System.out.println(Inputnames[m][n]);
                }
            }
        }
    }
}

我正在學習 java 並且當我嘗試接收由字符串組成的 Arrays 數組作為用戶輸入時,它打印出 null 並且沒有進一步輸入。 我錯過了什么?

output在cmd上是這樣的:

C:\Users\dynam\Desktop\Java Files>java ArrayofArrays barbie cinderella troomtroom wonderwoman Captainmarvel Cheetah 輸入行

2 輸入列

1 輸入姓名

null 輸入名稱

蝙蝠俠

蝙蝠俠

我在幾個問題中經常看到這種情況。 此處更詳細地描述了該問題。

要解決您的問題,請將obj.nextInt()替換為 Integer.parseInt Integer.parseInt(obj.nextLine()) 所以基本上你的代碼應該如下所示:

    System.out.println("Enter rows\n");
    r = Integer.parseInt(obj.nextLine());
    System.out.println("Enter columns\n");
    c = Integer.parseInt(obj.nextLine());

如果您有任何機會在此處輸入 integer 以外的其他內容,則可能必須使用try-catch塊來確保處理NumberFormatException

因為 Scanner.nextInt 方法不會讀取按“Enter”后創建的輸入中的換行符,因此對 Scanner.nextLine 的調用在讀取該新行后返回。

也看起來你的 for 循環搞砸了,試試下面的代碼(清理了一下) -

package com.example.demo;

import java.util.Scanner;

class ArrayofArrays {
    public static void main(String[] args) {
        String[][] ListofNames = {
                {"barbie", "cinderella", "troomtroom"},
                {"wonderwoman", "captainmarvel", "Cheetah"}
        };
        for (String[] i : ListofNames) {
            for (String x : i) {
                System.out.println(x);
            }
        }
        int r, c;
        Scanner obj = new Scanner(System.in);
        System.out.println("Enter rows\n");
        r = obj.nextInt();
        System.out.println("Enter columns\n");
        c = obj.nextInt();
        obj.nextLine();
        String[][] Inputnames = new String[r][c];
        for (int j = 0; j < r; j++) {
            for (int l = 0; l < c; l++) {
                System.out.println("Enter name\n");
                Inputnames[j][l] = obj.nextLine();

            }
        }
        for (int m = 0; m < r; m++) {
            for (int n = 0; n < c; n++) {
                System.out.println(Inputnames[m][n]);
            }
        }
    }
}

希望這可以幫助!

暫無
暫無

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

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