2013-10-03 206 views
1

我正在用Java編寫計算機定價程序。我試圖找出一種方法來生成由用戶輸出確定的子類。繼承我的代碼到目前爲止。我意識到我運行多次相同的方法,但我不知道任何其他方式來獲得變量,以測試輸出。由於某些原因,當b.getScreenPrice(screenPrice)在執行2時未被執行。任何答案如果有幫助。感謝從子類Java獲取值

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Computer { 
    InputStreamReader in = new InputStreamReader(System.in); 

    BufferedReader keyboard = new BufferedReader(in); 

    public Computer() { 

    } 

    public String pickComputer() { 
     String comp = null; 
     System.out.println("Select a number for desired computer:"); 
     System.out.println("1. Desktop"); 
     System.out.println("2. Laptop"); 
     try { 
      comp = keyboard.readLine(); 
      if (comp.equals("1")) { 
       comp = "Desktop"; 
      } 
      if (comp.equals("2")) { 
       comp = "Laptop"; 
      } 
     } catch (IOException e) { 
      pickComputer(); 
     } 
     return comp; 
    } 

    public class Notebook extends Computer { 
     public String getScreenSize() { 
      String size = null; 
      System.out.println("Select a number for the desired screen size:"); 
      System.out.println("1. 19 inch ($200)"); 
      System.out.println("2. 17 inch ($150)"); 
      System.out.println("3. 15 inch ($100)"); 
      try { 
       size = keyboard.readLine(); 

       if (size.equals("1")) { 
        size = "19"; 
       } 
       if (size.equals("2")) { 
        size = "17"; 
       } 
       if (size.equals("3")) { 
        size = "15"; 
       } 

      } catch (IOException e) { 
       getScreenSize(); 
      } 
      return size; 

     } 

     public int getScreenPrice(String screen) { 
      int sPrice = 0; 
      if (screen.equals("19")) { 
       sPrice = 200; 
      } 
      if (screen.equals("17")) { 
       sPrice = 150; 
      } 
      if (screen.equals("15")) { 
       sPrice = 100; 
      } 
      return sPrice; 

     } 

     public void calculatePrice(int screeen) { 
      System.out.println(screeen); 
     } 

    } 

    public class ComputerTester { 
     public static void main(String[] args) { 

      Computer a = new Computer(); 
      Notebook b = new Notebook(); 
      String screenSize = b.getScreenSize(); 
      String newComputer = a.pickComputer(); 

      if (newComputer.equals("Desktop")) { 
       System.out.println("Test Worked"); 
      } 
      if (newComputer.equals("Laptop")) { 
       b.getScreenPrice(screenSize); 
      } 
     } 
    } 
} 

輸出:

Select a number for the desired screen size: 
1. 19 inch ($200) 
2. 17 inch ($150) 
3. 15 inch ($100) 
1 
Select a number for desired computer: 
1. Desktop 
2. Laptop 
2 

回答

0

試着改變你的代碼中使用

size = keyboard.readLine().trim(); 

這將削減任何拖尾和先行空白。如果你打印出你的尺寸,我打賭它會在結尾處有一個新的線條字符,通過按回車鍵。

0

在您的getScreenPrice(String)方法中,您將返回一個int值,但在您的主方法中您只是調用方法。你沒有設置一個int值或任何東西。因此,當你選擇2時,如果沒有任何反應,你的代碼工作正常,因爲在你的程序結束時「沒有」會發生。

嘗試修改此:

 if (newComputer.equals("Laptop")) { 
      b.getScreenPrice(screenSize); 
     } 
在此

 if (newComputer.equals("Laptop")) { 
      int price = b.getScreenPrice(screenSize); 
      System.out.println(price.toString()); 
     } 

我認爲您是在尋找將出現