2016-02-29 16 views
-1

我想創建一個程序,詢問姓名,年齡,然後將打印在我的屏幕上。但我正在嘗試使用「toString」方法和對象。基本程序與對象(java)

當我運行我的程序,我鍵入名字,姓氏和年齡,它打斷,讓我看看消息:

"Exception in thread "main" java.util.IllegalFormatConversionException: d != tutorial35Composition.Banana 
    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source) 
    at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source) 
    at java.util.Formatter$FormatSpecifier.print(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.lang.String.format(Unknown Source) 
    at tutorial35Composition.Apple.toString(Apple.java:13) 
    at java.lang.String.valueOf(Unknown Source) 
    at java.io.PrintStream.println(Unknown Source) 
    at tutorial35Composition.Main.main(Main.java:24) 
" 

代碼:

package tutorial35Composition; 

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     String name; 
     String surname; 
     int age; 
     Scanner input = new Scanner(System.in); 
     System.out.println("Type your name: "); 
     name = input.nextLine(); 
     System.out.println("Type your surname: "); 
     surname = input.nextLine(); 
     System.out.println("Type your age: "); 
     age = input.nextInt(); 

     Banana banana = new Banana(age); 
     Banana banan = banana; 
     Apple apple = new Apple(name,surname,banan); 
     Apple appl; 
     appl = apple; 
     System.out.println(appl); 
    } 

} 


package tutorial35Composition; 

public class Apple { 
    String Name; 
    String Surname; 
    Banana Age; 
    public Apple(String name,String surname,Banana age){ 
     Name = name; 
     Surname = surname; 
     Age = age; 
    } 
    public String toString(){ 
     return String.format("Your name is %s, your surname is %s and your age is %02d", Name, Surname, Age); 
    } 
} 

package tutorial35Composition; 

public class Banana { 
    int age; 
    public Banana(int Age){ 
     age = Age; 
    } 
    public String toString(){ 
     String Age2; 
     Age2 = age + ""; 
     return Age2; 
    } 
} 
+5

那是因爲你'Banana'不是整數

public String toString() { return String.format("Your name is %s, your surname is %s and your age is %02d", Name, Surname, Age.age); } 

使用吸氣劑。你確定把你的年齡稱爲「香蕉」有道理嗎? –

+0

對不起,不適合的名字,我只學習Java和試驗。並感謝您的回答。 – Lenob

回答

3

不能將Banana作爲整數打印,但可以在該類中打印age

return String.format("Your name is %s, your surname is %s and your age is %02d", 
      Name, Surname, Age.age); 

順便說一句,你應該用小寫字母開始變量名。例如namesurnameage

+1

添加一小塊......當我通過一個方法傳遞變量時,我使用'_var'來表示變量,'var'來表示變量來設置' –

+0

@ R.Hull我的IDE在一個方法中顯示了這些變量不同的顏色對我來說可以。 –

4

的Java String格式的API指示%d代表:

結果被格式化爲十進制整數

香蕉是不是一個整數(太激動了,我終於說)。

您可以實現吸氣您的Bananaage財產,並援用而不是將整個Banana實例你格式化的。

API here

0

您試圖打印一個對象而不是其成員,您可以這樣做,或者您可以使用getter方法來獲取值。香蕉類

public int getAge(){ 
    return age; 
}