Wie die Verwendung von String.format in java 8?
Heute schrieb ich ein einfaches Programm in eclipse Kepler in java 8. Eigentlich kopiert habe ich es von einigen video-tutorial. In diesem tutorial, es lief, aber im Arbeitsplatz ist es nicht. Fehler Zeile ist
String.format("%02d:%02d:%02d",hour,minute,second);
Ich verstehe nicht, was der Fehler ist hier.
Es hebt die Methode format(String,object[])
in der Art String
sind nicht anwendbar für die argument(String, int, int, int)
public class Demo {
private int hour;
private int second;
private int minute;
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 railwayTime(){
return String.format("%02d:%02d:%02d",hour,minute,second);//error in this line
}
public String regular(){
return String.format("%02d:%02d:%02d %s",((hour==0 ||hour==24)?12:(hour%12)), minute, second, (hour>=12)?"AM":"PM");//error in this line
}
}
public class ShowTime {
public static void main(String[] args){
Demo d=new Demo();
System.out.println(d.railwayTime());
System.out.println(d.regular());
}
}
- Als der Ausnahme-Staaten, müssen Sie die Formatierung der Argumente als array und nicht als einzelne Argumente.
- Mit Java 8 hier. Kann ich nicht reproduzieren diesen Fehler. Glauben Sie, Sie könnten uns zeigen, einige mehr code? Und sind Sie sicher, dass Sie mit Java 8 auch?
String.format
ist eingeführt in Java 5 und da es dann akzeptiertObject...
ich verstehe einfach nicht, wie hat man missbraucht, die standard-library zu bekommen dieses Ergebnis.- Lesen Sie diese: Was ist "compiler compliance level" in Eclipse?, setzen Sie Ihre Ebene, um java 8 und dann glücklich sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausnahme bittet, Sie für ein array statt Komma-sepparated Saiten:
Aber eigentlich Methode
format(String,object[])
existiert nicht inString
ist es:format(String pattern, Object... arguments)
was sollte mit Kommas,
. Es ist etwas mit Ihrer syntax, aber nicht in dem gezeigten code.String data
->String[] data
hour
,minute
undsecond
sindint
s, so dass diese nicht kompilieren. Sollten Siedata
alsObject[] data = ...
Eine wirkliche Antwort auf dieses problem ist nur Ihr Typ int.
Sie müssen nicht mit dem Objekt konkret, aber Sie haben eine Art, die Erben von Object und int ist ein raw-Typ, der keine Erben von Object, wie alle raw-Typen.
So können Sie verwenden Sie Integer anstelle von int um Ihr problem zu lösen.
Ich weiß, das ist alt, aber ich habe eine Vermutung.
Wie oben, haben Sie erklärt
hour
,second
undminute
als der Typ int ist ein primitiver Datentyp und ist nicht kompatibel zu denObject
geben.Könnten Sie ändern wollen Sie an:
Integer
ist ein wrapper für die primitiven Typint
und ist verwendet zu objektivieren es.Dann die Zeile
String.format("%02d:%02d:%02d",hour,minute,second);
sollte funktionieren.