繁体   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