Java System.out.println()和扫描仪出现奇怪问题

Java System.out.println()和扫描仪出现奇怪问题,java,system,java-7,println,Java,System,Java 7,Println,我有一个while循环,它总是要求用户输入一封信。当输入一个字母时,它会在switch语句中查找,然后从switch语句中执行一个代码块,请求更多的输入。在代码的某些部分,代码的输出似乎被注册为用户的输入。下面是我的代码的一个简单示例: while (true) { System.out.print("Enter a letter :: "); selection = keyboard.nextLine(); selection = selection.toUpperCa

我有一个while循环,它总是要求用户输入一封信。当输入一个字母时,它会在switch语句中查找,然后从switch语句中执行一个代码块,请求更多的输入。在代码的某些部分,代码的输出似乎被注册为用户的输入。下面是我的代码的一个简单示例:

while (true) {
    System.out.print("Enter a letter :: ");
    selection = keyboard.nextLine();
    selection = selection.toUpperCase();

    switch (selection) {
    case "A":
        A = null;
        A = new Matrix();
        System.out.println("Default matrix A initialized.");
        break;

    case "C":
        System.out.print("Enter the number of rows (rows > 0) :: ");
        rows = keyboard.nextInt();
        System.out
                .print("Enter the number of columns (colums > 0) :: ");
        cols = keyboard.nextInt();
        System.out
                .print("Enter the initial value for each element :: ");
        initialValue = keyboard.nextInt();

        C = null;
        C = new Matrix(rows, cols, initialValue);
        System.out.println("Matrix C initialized.");
        break;
    }
}
nextInt()
获取下一个int,但不读取新行字符。在源代码中,您使用的是
nextLine()
,在“C”的情况下,您需要包含另一个
nextLine()
,以移动到下一行

case "C":
 ...
 ...
 keyboard.nextLine();
break;

你能更清楚地说明你的问题吗?乍一看,这似乎是因为您使用的是System.out.print()而不是System.out.println()。您的预期和实际输出是什么?您的代码给了我一个错误:无法打开String类型的值。只允许使用可转换的int值或枚举常量,您应该使用字符('A','B','C')而不是('A','B','C')确定,这样它将输出“输入字母::”,我将键入“C”。然后我将填写开关案例C的输入,得到输出:“矩阵C已初始化。”然后“输入字母::输入字母:::”@IswantoSan,我想OP可能使用Java 7,在这种情况下它工作得很好。谢谢,我在每个键盘后添加了keyboard.nextLine(),我的程序现在可以工作了!