2015-07-21 68 views
-1
at java.util.Formatter$FormatSpecifier.conversion(Unknown Source) 
    at java.util.Formatter$FormatSpecifier.<init>(Unknown Source) 
    at java.util.Formatter.parse(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.lang.String.format(Unknown Source) 
    at testing.thetest.toMilitary(thetest.java:14) 
    at testing.apples.main(apples.java:6) 

我有兩個類,一個是蘋果,一個是最好的。獲取時間錯誤(Java)

APPLES CODE:

package testing; 

public class apples{ 
    public static void main(String args[]){ 
     thetest thetestOb = new thetest(); 
     System.out.println(thetestOb.toMilitary()); 
     thetestOb.setTime(13, 27, 6); 
     System.out.println(thetestOb.toMilitary()); 
    } 
} 

THETEST CODE:

package testing; 
public class thetest{ 
    private int hour; 
    private int minute; 
    private int second; 

    public void setTime(int h, int m, int s){ 
     hour = ((h >= 0 && h < 24) ? h : 0); 
     minute = ((m >= 0 && m < 60) ? m : 0); 
     second = ((s >= 0 && s < 60) ? s : 0); 
    } 

    public String toMilitary(){ 
     return String.format("%O2d:%O2d:%O2d", hour, minute, second); 
    } 
} 

是否有人可以解釋爲什麼我得到這些錯誤?我是一名Java初學者,我正在學習視頻教程。我確保代碼完全一樣,但我得到了這個錯誤。其他人也有同樣的問題。請幫忙。

+1

您沒有添加錯誤消息,告訴您爲什麼發生這種情況。 「O」不是「0」。 –

+0

這是錯誤信息......它沒有X,而且那個人在教程中寫了O,而不是0. – Code123

+0

@ Code123我真誠地推薦忽略視頻教程,其主要目標可能是獲取廣告印象而不是教學。我衷心地提出了古老的Java Trail教程:http://docs.oracle.com/javase/tutorial/java/ –

回答

0

這裏您使用的是字母「O」而不是數字零(0)。

public String toMilitary(){ 
     return String.format("%O2d:%O2d:%O2d", hour, minute, second); 
    } 

將它們更改爲0,它將工作。

+0

謝謝。剛剛嘗試過。 – Code123

+0

不起作用?它爲我工作,因爲那是你唯一的問題。 運行: 00:00:00 13:27:06 BUILD SUCCESSFUL(總時間:0秒) – pininfarina

+0

它確實有效,我感謝你的支持。 – Code123

0

首先初始化所有變量。

package testing; 
public class thetest{ 
    private int hour = 0; 
    private int minute = 0; 
    private int second = 0; 

    public void setTime(int h, int m, int s){ 
     hour = ((h >= 0 && h < 24) ? h : 0); 
     minute = ((m >= 0 && m < 60) ? m : 0); 
     second = ((s >= 0 && s < 60) ? s : 0); 
    } 

    public String toMilitary(){ 
     return String.format("%02d:%02d:%02d", hour, minute, second); 
    } 
} 

因爲如果你不初始化實例變量,在第一次通話,toMilitary(),小時,分鐘和秒在他們沒有任何價值可言。 您只是第二次設置值。

是的,那些將是0(零)而不是O s。 %O2d不是Java語法。它甚至不會編譯。