java程序中的输出问题

java程序中的输出问题,java,Java,好的,这个程序试图显示1-4位整数的中间数字,如果它有偶数个数字,它应该显示没有中间数字,但是我不能让它正确地输出答案,下面是代码: public class digit { public static void main(String[] arg) { int MyInt1, MyInt2, MyInt3, MyInt4; EasyReader keyboard = new EasyReader(); // Get the 1-4 dig

好的,这个程序试图显示1-4位整数的中间数字,如果它有偶数个数字,它应该显示没有中间数字,但是我不能让它正确地输出答案,下面是代码:

public class digit {
    public static void main(String[] arg) {
        int MyInt1, MyInt2, MyInt3, MyInt4;
        EasyReader keyboard = new EasyReader();
        // Get the 1-4 digit integer
        int MyInt = keyboard.readInt("Enter your integer: ");
        // Calculate the middle digit
        MyInt1=MyInt/10;
        if (MyInt1 < 1) {
            System.out.print("The middle digit is: ");
            System.out.println(MyInt);
        MyInt2=MyInt1/10;
        }else if (MyInt2 < 1) {
            System.out.println("No middle digit");
        MyInt3=MyInt2/10;
        }else if (MyInt3 < 1) {
            System.out.print("The middle digit is: ");
            System.out.println(MyInt2);
        MyInt4=MyInt3/10;
        }else if (MyInt4 < 1) {
            System.out.println("No middle digit");
        }   
    }
}
公共类数字{
公共静态void main(字符串[]arg){
int MyInt1、MyInt2、MyInt3、MyInt4;
EasyReader键盘=新建EasyReader();
//获取1-4位整数
int MyInt=keyboard.readInt(“输入整数:”);
//计算中间数字
MyInt1=MyInt/10;
if(MyInt1<1){
系统输出打印(“中间数字为:”);
System.out.println(MyInt);
MyInt2=MyInt1/10;
}else if(MyInt2<1){
System.out.println(“无中间数字”);
MyInt3=MyInt2/10;
}else if(MyInt3<1){
系统输出打印(“中间数字为:”);
System.out.println(MyInt2);
MyInt4=MyInt3/10;
}else if(MyInt4<1){
System.out.println(“无中间数字”);
}   
}
}
我还在开始时导入一个包


我得到的一个示例输出是,如果我输入1234作为我得到的整数:“123412No middle digital”作为我的答案,我肯定对else if语句做了一些错误,我想,但我不知道它是什么。感谢您的帮助。

缩进没有定义使用
if
语句执行什么和不执行什么

如果不满足第一个条件,
MyInt2
将永远不会被定义,因此下一个条件也将失败。在原始代码中,如果
MyInt1<1
为真,则您将打印
中间数字为:
,并计算
MyInt2
的值。但是,如果条件为false,您将检查
MyInt2<1
,但
MyInt2
是否未定义,因为只有在第一个条件为true时才计算(在原始代码中)

像这样的方法应该会奏效:

// Calculate the middle digit
MyInt1=MyInt/10;
MyInt2=MyInt1/10;
MyInt3=MyInt2/10;
MyInt4=MyInt3/10;
if (MyInt1 < 1) {
    System.out.print("The middle digit is: ");
    System.out.println(MyInt);
}else if (MyInt2 < 1) {
    System.out.println("No middle digit");
}else if (MyInt3 < 1) {
    System.out.print("The middle digit is: ");
    System.out.println(MyInt2);
}else if (MyInt4 < 1) {
    System.out.println("No middle digit");
}
//计算中间数字
MyInt1=MyInt/10;
MyInt2=MyInt1/10;
MyInt3=MyInt2/10;
MyInt4=MyInt3/10;
if(MyInt1<1){
系统输出打印(“中间数字为:”);
System.out.println(MyInt);
}else if(MyInt2<1){
System.out.println(“无中间数字”);
}else if(MyInt3<1){
系统输出打印(“中间数字为:”);
System.out.println(MyInt2);
}else if(MyInt4<1){
System.out.println(“无中间数字”);
}
一些评论:

  • 类名通常用
    大写
    ,变量名用
    小写
  • 中间的数字更容易从表示数字的字符串中提取
  • 表达式
    str.length()/2
    将始终向零舍入
尝试以下代码:

Scanner input = new Scanner(System.in);

System.out.print("Give an integer number from 1 to 4 digits: ");
String number = input.next();


switch(input.length())
{
    case 3:
       System.out.println("The middle is " + input[1]);
       break;
    case 4:
       System.out.println("The middles are " + input[1] + " " + input[2]);
       break;
    default:
       System.out.println("You are inserted wrong number, there aren't middles");
}
Scanner input = new Scanner(System.in);

System.out.print("Give an integer number from 1 to 4 digits: ");
String number = input.next();


switch(input.length())
{
    case 3:
       System.out.println("The middle is " + input[1]);
       break;
    case 4:
       System.out.println("The middles are " + input[1] + " " + input[2]);
       break;
    default:
       System.out.println("You are inserted wrong number, there aren't middles");
}