Hallo, ich habe den folgenden "Fehler" (Glühbirne mit x bei eclipse) bei meinem program: The method printf(String, Object[]) in the type printStrem in not applicable for the arguments (String, double, double)
Der Quellcode ist folgender:
Java:
package insel;publicclassSmallConversation{publicstaticvoidmain(String[] args){System.out.println("Moin! Wie heißt du denn?");String name=new java.util.Scanner(System.in ).nextLine();System.out.printf("Hallo %s. Wie alt bist du denn?%n", name);int age=new java.util.Scanner(System.in ).nextInt();System.out.printf("Aha, %s jahre, das ist ja die Hälfte von %s.%n", age, age*2);System.out.println("Sag mal, was ist deine Lieblingsfließkommazahl?");double value=new java.util.Scanner(System.in ).nextDouble();System.out.printf("%s? Aha, meine ist %s.%n", value,Math.random()*100000);}}
Dieser funktioniert aber nur, wenn du genauso viele Kommas wie %-Variablen in printf() hast.
In der letzten Methode hast du zu wenig, hier die Lösung:
Java:
System.out.printf("%s? Aha, meine ist %s.%n",value,Math.random()*100000,/* Und hier die Nachpunkt-Stelle, da fehlte nämlich eine zweite Zahl für das letzte %n */);
Also das klappt leider nicht :c habe es so versucht und ne zahl noch drangehangen wie du gesagt hast, habe auch mal zu testen das %n weggemacht (was ja glaube ich nur zum zeilenumbruch ist) und immernoch der selbe fehler. wenn ich die automatische fehlerbehebung machen will schlägt er mir folgendes vor:
Java:
package insel;publicclassSmallConversation{publicstaticvoidmain(String[] args){System.out.println("Moin! Wie heißt du denn?");Object[] name =new java.util.Scanner(System.in ).nextLine();System.out.printf("Hallo %s. Wie alt bist du denn?%n", name);int age =new java.util.Scanner(System.in ).nextInt();System.out.printf("Aha, %s jahre, das ist ja die Hälfte von %s.%n", age, age*2);System.out.println("Sag mal, was ist deine Lieblingsfließkommazahl?");double value =new java.util.Scanner(System.in ).nextDouble();System.out.printf("%s? Aha, meine ist %s.%n", value,Math.random()*100000);}}
aber auch das behebt den fehler nicht ... Habe auch nochmal alles geprüft das steht genau so in meinem Buch "Java ist auch eine Insel"
Habe das ganze jetzt mal ohne printf gemacht und zwar so:
Java:
package insel;publicclassSmallConversation{publicstaticvoidmain(String[] args){System.out.println("Moin! Wie heißt du denn?");String name =new java.util.Scanner(System.in ).nextLine();System.out.println("Hallo "+ name +". Wie alt bist du denn?");int age =new java.util.Scanner(System.in ).nextInt();System.out.println("Aha, "+age+" jahre, das ist ja die Hälfte von "+age*2+".");System.out.println("Sag mal, was ist deine Lieblingsfließkommazahl?");double value =new java.util.Scanner(System.in ).nextDouble();System.out.println(value+"? Aha, meine ist "+Math.random()*100000+".");}}
Jetzt ist nurnoch bei den Scanns eine Warnung aber kein großer fehler mehr =)
also meiner Meinung ist das bei printf so : %s = String %d gleich Zahl..
ein int denn du bei age einscannen lässt müsstest du erst umwandeln wenn du %s schreibst oder ebend %d nehmen.