2010-10-31 80 views
0

好,所以這個程序試圖顯示一個1-4位數的整數的中間數字,如果它有偶數個數字,它應該顯示沒有中間數字,但是我不能讓它正確地輸出答案,這裏是代碼:java程序中的輸出問題

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"); 
     } 
    } 
} 

我也在開始時導入一個包。

我得到的一個輸出示例是,如果我輸入1234作爲我得到的整數:'123412No middle digit'作爲我的答案,我必須在else if語句中做錯誤,但我不知道它是什麼是。謝謝

回答

2

縮進並沒有定義什麼是執行和什麼不執行與if陳述。

如果您不滿足第一個條件,MyInt2將永遠不會被定義,所以下一個條件也將失敗。在您的原始代碼中,如果MyInt1 < 1爲true,那麼您將打印The middle digit is:並計算MyInt2的值。但是,如果條件爲假,您將檢查MyInt2 < 1,但MyInt2未定義,因爲只有在第一個條件爲真時才計算(在您的原始代碼中)。

像這樣的東西應該工作:

// 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"); 
} 
1
public class PrintMiddleDigit { 
    public static void main(String[] arg) { 
    EasyReader keyboard = new EasyReader(); 
    int number = keyboard.readInt("Enter your integer: "); 
    String str = String.valueOf(number); 
    if (str.length() % 2 == 0) { 
     System.out.println("No middle digit"); 
    } else { 
     int middle = str.length()/2; 
     System.out.print("The middle digit is: "); 
     System.out.println(str.charAt(middle)); 
    } 
    } 
} 

一些言論:

  • 類名通常是寫在UpperCamelCase,變量名中lowerCamelCase
  • 中間數字更容易從表示數字的字符串中提取。
  • 表達式str.length()/2將始終趨向零。
-1

試試這個代碼:

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"); 
}