查询与字符/整数相关的输入

  • 本文关键字:整数 字符 查询 java
  • 更新时间 :
  • 英文 :


我无法理解为什么当我在此程序中将 char 更改为 int 时编译器只显示正在运行(这是永远的)。通过更改,我的意思是仅使用 int 来获取选项编号,因此在 switch 中使用 int 数字本身。

这是正常的字符 1,它正在工作-

public static void main(String args[])
    throws java.io.IOException{
    char option; int i=0;
    do{
        if(i==1)
            System.out.println("nNotice: Wrong option chosen, pick again.");
        i=1;
        System.out.println("Help on:");
        System.out.println("1. if");
        System.out.println("2. switch");
        System.out.println("3. while");
        System.out.println("4. do-while");
        System.out.println("5. for");
        System.out.println("Pick any option for brief informatrion.");
        option= (char)System.in.read();
    }while(option<'1' || option>'5');
    switch(option){
        case '1':
            System.out.println("The If:n");
            System.out.println("If(condition) statement;");
            System.out.println("else statement;");
            break;
        case '2':
            System.out.println("The Switch:n");
            System.out.println("switch(expression){");
            System.out.println("  case constant:");
            System.out.println("      statement sequence");
            System.out.println("  break;");
            System.out.println("  // ...");
            System.out.println("}");
            break;
        case '3':
            System.out.println("The While:n");
            System.out.println("while(condition statement;)");
            break;
        case '4':
            System.out.println("The Do-While:n");
            System.out.println("do{");
            System.out.println("    statement;");
            System.out.println("}while(condition);");
            break;
        case '5':
            System.out.println("The For:n");
            System.out.println("for(init; condition; iteration){");
            System.out.println("    statement;");
            System.out.println("}");
            break;
    }
}

}

这是 int 1,它只是继续运行

public static void main(String args[])
    throws java.io.IOException{
    int option; int i=0;
    do{
        if(i==1)
            System.out.println("nNotice: Wrong option chosen, pick again.");
        i=1;
        System.out.println("Help on:");
        System.out.println("1. if");
        System.out.println("2. switch");
        System.out.println("3. while");
        System.out.println("4. do-while");
        System.out.println("5. for");
        System.out.println("Pick any option for brief informatrion.");
        option= System.in.read();
    }while(option<1 || option>5);
    switch(option){
        case 1:
            System.out.println("The If:n");
            System.out.println("If(condition) statement;");
            System.out.println("else statement;");
            break;
        case 2:
            System.out.println("The Switch:n");
            System.out.println("switch(expression){");
            System.out.println("  case constant:");
            System.out.println("      statement sequence");
            System.out.println("  break;");
            System.out.println("  // ...");
            System.out.println("}");
            break;
        case 3:
            System.out.println("The While:n");
            System.out.println("while(condition statement;)");
            break;
        case 4:
            System.out.println("The Do-While:n");
            System.out.println("do{");
            System.out.println("    statement;");
            System.out.println("}while(condition);");
            break;
        case 5:
            System.out.println("The For:n");
            System.out.println("for(init; condition; iteration){");
            System.out.println("    statement;");
            System.out.println("}");
            break;
    }
}

}

请参阅 https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read%28%29

System.in.read返回一个int表示字符。

假设您键入 1 ,它将读作 49

如果你使用文件在到达EOFstdin它会返回-1

即使char版本,也会发生相同的错误。

请参阅此演示:https://ideone.com/Q83qxn