Comment faire pour utiliser des chaînes de caractères.format en java 8?
Aujourd'hui, j'ai écrit un programme simple dans eclipse Kepler dans java 8. En fait, j'ai copié à partir d'une vidéo tutoriel. Dans ce tutoriel, il a couru, mais dans mon ordinateur, il n'a pas. Ligne d'erreur est
String.format("%02d:%02d:%02d",hour,minute,second);
Je ne comprends pas quelle est l'erreur ici.
Il met en évidence la méthode format(String,object[])
dans le type String
ne sont pas applicables pour les 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());
}
}
- Comme l'exception des états, vous devez fournir à la mise en forme des arguments dans un tableau, non pas comme des arguments personnels.
- À l'aide de Java 8 ici. Je ne peux pas reproduire cette erreur. Pourriez-vous nous montrer du code plus? Et êtes-vous sûr que vous êtes à l'aide de Java 8 trop?
String.format
est introduit dans Java 5 et depuis lors, il accepteObject...
, je ne comprends juste pas comment ypu abusé de la bibliothèque standard pour obtenir ce résultat.- Lire ceci: qu'est-Ce que "compilateur niveau de conformité" dans Eclipse?, définissez votre niveau de java 8 et puis être heureux.
Vous devez vous connecter pour publier un commentaire.
L'exception vous demande un tableau à la place des virgules sepparated chaînes:
Mais en fait, la méthode
format(String,object[])
n'existe pas dansString
, c'est:format(String pattern, Object... arguments)
ce que devrait travailler avec des virgules,
. Il y a quelque chose avec votre syntaxe, mais pas dans le code.String data
->String[] data
hour
,minute
etsecond
sontint
s, de sorte que ce ne serait pas la compilation. Vous devez créerdata
commeObject[] data = ...
Une vraie réponse à ce problème, c'est que votre type int.
Vous n'avez pas à utiliser l'Objet en particulier, mais vous devez utiliser un type qui hérite de l'Objet et de les int c'est les raw d'un type qui n'hérite pas de l'Objet, à l'instar de tous les types.
Ainsi, vous pouvez utiliser Entier au lieu de int pour résoudre votre problème.
Je sais que c'est vieux, mais j'ai une supposition.
Comme ci-dessus, vous avez déclaré
hour
,second
etminute
de type int, qui est un type de données primitif et n'est pas compatible à laObject
type.Vous pourriez vous voulez les changer:
Integer
est un wrapper pour le type primitifint
et est utilisé pour objectiver il.D'ici là, la ligne
String.format("%02d:%02d:%02d",hour,minute,second);
devrait fonctionner correctement.