2013-07-26 15 views
11

Tôi không nghi ngờ gì là thiếu điều gì đó thực sự rõ ràng ở đây nhưng tôi không thể hiểu được. Bất kỳ trợ giúp sẽ được đánh giá cao. Sai lầm xuất phát từ đây:Ngoại lệ trong chủ đề "chính" java.util.MissingFormatArgumentException: Định dạng thông số '10s'

package B00166353_Grades; 

public class Student{ 
    String name,banner; 

    public Student(String name,String banner){ 
     this.name=name; 
     this.banner=banner; 
    } 

    public String toString(){ 
     String productDetails=new String(); 
     productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner); 
     return productDetails; 
    } 
} 
+0

Lỗi là một số nơi khác. Phương pháp chính của bạn ở đâu? –

+1

Không, nó ở ngay trong 'toString()'. Chỉ có hai thông số được thông qua ... –

Trả lời

28

chuỗi định dạng của bạn "%-20s%10.2s%10s" mất ba thông số:

  1. %-20s
  2. %10.2s
  3. %10s

nhưng chỉ cung cấp hai thông số:

  1. this.name
  2. this.banner

Các thông báo lỗi nói rằng tham số thứ ba (ví %10s) là mất tích.

Vì vậy, hãy điều chỉnh chuỗi định dạng của bạn hoặc thêm tham số thứ ba.

1

Bạn cần phải thêm một tham số cho phương thức format, vì chuỗi định dạng của bạn đang chờ đợi cho 3 đối số, không phải là hai.

0
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner); 

Tôi nghĩ rằng bạn phải vượt qua lập luận khác, bởi vì bạn vượt qua chỉ tên và biểu ngữ nhưng trong chuỗi bạn có 3 lần% .. thử tương tự với chỉ% -20s% 10.2s

3

Bạn có:

productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner); 

Vì bạn có ba %s trong String của bạn, hy vọng format() ba paramteres, nhưng bạn chỉ vượt qua this.namethis.banner.

Ngoài ra, vì bạn đang ở trong số Student, bạn làm không cần sử dụng this. Bạn có thể chỉ cần tham chiếu chúng theo namebanner.