2014-10-11 75 views
-6

我想說謝謝你審查我的帖子和任何我對我的問題的貢獻。我相當新的Java,所以我想知道如果你們可以請幫我調試這個程序。java編程練習調試程序

import java.util.Scanner; 

public class DebugExercise { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String area, inStr; 
     int pages; 

     System.out.println("Please enter your city"); 
     area = input.nextLine(); 

     System.out.println("Please enter page number " + area + "'s phone book"); 
     pages = input.nextInt(); 

     PhoneBook phoneBook = new PhoneBook(area, pages); 
     phoneBook.display(); 
    } 
} 

class PhoneBook extends Book { 

    private String area; 
    private String size; 

    PhoneBook(int pages, String city) { 
     super(); 
     area = city; 
     if (pages > 300) { 
      size = "big"; 
     } else { 
      size = "small"; 
     } 
    } 

    public display() { 
     System.out.println(area + pages + size); 
    } 
} 

class Book { 

    protected int pages; 

    public Book(int pages) { 
     pages = pages; 
    } 

    public int getPages() { 
     return pages; 
    } 
} 
+0

您的問題是什麼? – Maroun 2014-10-11 08:05:39

+0

我發現了一些缺失的主要和類大括號中的錯誤。 – 2014-10-11 08:06:18

+0

我需要調試程序,並找不到程序中的其他錯誤。我不是一個好的調試器。 – 2014-10-11 08:06:54

回答

2

交換的參數電話簿構造

public static void main(String[] args) { 
      Scanner input = new Scanner(System.in); 
      String area, inStr; //there is no need of inStr as you are not using it so remove it if not used 
      int pages; 

      System.out.println("Please enter your city"); 
      area = input.nextLine(); 

      System.out.println("Please enter page number " + area + "'s phone book"); 
      pages = input.nextInt(); 

      PhoneBook phoneBook = new PhoneBook(pages,area); //swapp the argurments 
       phoneBook.display(pages, area); //add arguments to this otherwise it will just show 0 
     } 

而在通訊錄中的類添加參數超

PhoneBook(int pages, String city) { 
     super(pages); // u can even remove this its not needed 
     area = city; 
     if (pages > 300) { 
      size = "big"; 
     } else { 
      size = "small"; 
     } 

public void display(int pages,String area) { 
    System.out.println(area + pages + size); 
} 
} 

現在將工作的所有的

+0

謝謝你的工作,但它需要顯示城市的頁碼,如果它是大或小,根據if語句 – 2014-10-11 08:23:23

+0

我相信有另一個隱藏的錯誤是停止顯示頁碼到println語句 – 2014-10-11 08:23:58

+0

接受答案如果幫助:) – kirti 2014-10-11 08:30:02

0

首先,有幾個基本問​​題:

  1. Phonebook類的構造函數PhoneBook(int pages, String city),你叫super(),但對於類Book沒有空的構造函數,所以你必須調用super(pages)
  2. Book類的構造函數中,您將爲其自己的值分配pages變量。你可能打算做的是this.pages = pages;。通過使用this.pages,您告訴java您指的是您正在創建的對象的字段pages,而不是傳遞給構造函數的參數。您可以在Oracle的文檔中閱讀關於this關鍵字的更多信息here