簡體   English   中英

將用戶輸入傳遞給方法java

[英]passing user input to methods java

大家好,我是Java的完全入門者,我正在嘗試編寫一個這樣的程序:油漆公司已確定,每115平方英尺的牆壁空間將需要一加侖的油漆和八小時的勞動。

該公司每小時收取$ 18.00的人工費。

編寫一個程序,允許用戶輸入要上漆的房間數量和每加侖的上漆價格。 它還應要求每個房間的牆面面積為平方英尺。 該程序應具有返回以下數據的方法:

  • 所需塗料的加侖數
  • 所需的工作時間
  • 油漆成本
  • 人工費
  • 油漆工作的總費用

然后它應該在屏幕上顯示數據,這是我到目前為止所擁有的。 我可以得到用戶輸入和加侖數,但是當我嘗試計算工時數時,它是根據以前的計算結果來計算工時的,這不是我想要的。到目前為止

int resultnumberofhours = hoursoflabor(numberofsquarefeet,115,8);
        System.out.println("the number of hours needed are " + resultnumberofhours);
    }
public static int hoursoflabor(int numberofsquarefeet, int squarefeet,int labor){
        int resultnumberofhours = numberofsquarefeet/115*8;
        return resultnumberofhours;
    }

而是一步一步地嘗試這樣的代碼

Scanner dd = new Scanner(System.in);
int[] vars = new int[5];

for(int i = 0; i < vars.length; i++) {
  System.out.println("Enter next var: ");
  vars[i] = dd.nextInt();
}

我可以在代碼中看到的唯一問題是您對結果不做任何事情。 請嘗試以下操作:

int result = numberofsquarefeet(numberofsquarefeet, 115, 1);
System.out.println("Number of square feet: " + result);

從Java函數返回某些內容時,您可以將該值分配給指定為該函數的返回類型的相同類型的變量,也可以在print語句中使用輸出。 如果您對輸出不執行任何操作,則結果將丟失。

希望這可以幫助。

您必須在最后打印結果:

       System.out.println("enter number of square feet");
    numberofsquarefeet = Keyboard.nextInt();
    int resultSqFeet = numberofsquarefeet(numberofsquarefeet, 115, 1);
    System.out.println("number of square feet is" + resultSqFeet);
}

或在方法內部:

public static int numberofsquarefeet(int numberofsquarefeet, int squarefeet, int paint) {
    int result = numberofsquarefeet / 115 * 1;
    System.out.println("number of square feet is " + result);
    return result;
}

hoursoflabor

我建議您從編寫代碼后退一步,並先分析一下問題。

您有一個數據模型和一個過程,可以對其進行詳細描述。 這將幫助您為您的類和方法提出一個好的設計。 如果您立即開始編寫代碼,尤其是對於初學者,則通常最終會像一堆意大利面條。

這是我對數據模型的建議:

  • 繪畫公司
    • PAINT_GALLONS_PER_SQUARE_FOOT = 1/115
    • LABOR_HOURS_PER_SQUARE_FOOT = 8/115
    • LABOR_DOLLARS_PER_HOUR = 18
  • 房間
    • wallSpaceSquareFeet
  • 塗料
    • 美元每加侖
    • 加侖
    • computePaintCostInDollars()
  • 項目
    • 房間
    • 塗料
    • computeGallonsOfPaintRequired()
    • computeHoursOfLaborRequired()
    • computeLaborChargesInDollars()
    • computeTotalCostInDollars()

請注意,PaintingCompany類僅包含常量。 如果願意,可以將main()方法放在此類中。

油漆的類型和數量被建模為單一的“油漆”類。 您可能會說這是不准確的,並有一個單獨的PaintType(枚舉)來表示已知類型的油漆及其價格,但我認為這是目前的特征。 因此,使用上述模型,您需要以正確的價格實例化一個Paint實例,然后在其上設置油漆量。 然后,Paint類將具有計算總油漆價格的功能。

明確地對單元建模是一個想法。 該模型現在固定在美元和加侖上,但是將來您可能希望切換到歐元和升以便在歐洲銷售該應用程序。 目前,我沒有為單位建模,因為它可能會使練習復雜化。 為避免混淆,重要的是要清楚地指定單位,作為變量或方法名稱的一部分。眾所周知,由於這種類型的錯誤,太空火箭會墜毀。

該過程可能如下所示:

  1. 創建一個新項目
  2. 向用戶詢問油漆價格
  3. 在項目的“繪畫”對象上設置繪畫價格
  4. 開始迭代:
    • 向項目添加一個新的Room對象
    • 向用戶詢問房間的牆面面積(以平方英尺為單位)
    • 詢問用戶是否還有另一個房間
    • 如果是,則從步驟4進行迭代
  5. 如果否,請打印包含所需項目數據的報告

請注意,其中一些處理步驟是單獨類的理想選擇:

  • 迭代可以放在PaintingCompany類中
  • 從用戶那里獲取輸入。 最好將其分開,以便以后可以輕松更改它而不會影響其他代碼。
  • 打印報告。 報告通常有點復雜,具有輸出格式等,是一個很好的單獨問題。 您還希望能夠在不影響其他代碼的情況下更改報表實現。

如果您基於此(或您自己的)設計發布新代碼,我很樂意對此發表評論或為您提供任何幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM