2016-09-18 28 views
0

我真的想知道如何添加,乘或除使用掃描儀類,因爲我每次運行它總是給我的代碼0如何對java中由Scanner生成的值執行算術運算?

public static void main(String[] args) { 
int NumPerHamper; 
double ItemCost; 
int NumHampersMade; 
int NumItemsLeftOver; 
int ValuePerHamper; 
    int NumAvalable; 
double ValueAllotedHampers; 
double NumAllotedPerHamper; 
double ValueAllHampers; 
double ValueItemsLeftOver; 
int ItemLeftOver; 

    Scanner sc = new Scanner(System.in); 

    System.out.println("Enter the number of items avalible"); 
    ValuePerHamper = sc.nextInt(); 
    System.out.println("Enter the number of avaliable mac and cheese"); 
    NumAvalable = sc.nextInt(); 
    NumHampersMade = NumAvalable/ValuePerHamper; 

    // System.out.println("Items left over"); 
    //NumPerHamper = sc.nextInt(); 
    // System.out.println(""); 

    System.out.println(NumHampersMade); 


} 

}

+0

Java的命名約定是總是使用'camelCase'作爲變量,'TitleCase'則使用類名稱。我還建議不要將所有的變量聲明爲這樣,因爲它們使得更難以看到所有的數據類型,並且使得初始化變量時容易出錯。 – 4castle

+0

*「您如何對掃描儀產生的值執行算術運算?」*您對來自任何其他來源的值執行算術運算的方式相同。你使用算術運算符('+','-','*','/','%')編寫代碼。 – Andreas

回答

0

這是因爲整數除法會總是舍入,因爲int不能有小數。嘗試使用雙。

double ValuePerHamper, NumAvalable, NumHampersMade; 
Scanner sc = new Scanner(System.in); 

System.out.println("Enter the number of items avalible"); 
ValuePerHamper = sc.nextDouble(); 
System.out.println("Enter the number of avaliable mac and cheese"); 
NumAvalable = sc.nextDouble(); 
NumHampersMade = NumAvalable/ValuePerHamper; 

System.out.println(NumHampersMade); 
+0

即使將其更改爲double並更改了sc.nextInt(),我也遇到了錯誤;到一個sc.nextDouble(); – Tyrandis

+0

@Tyrandis什麼是錯誤?順便說一句,你應該檢查除以零。 – 4castle

+0

對不起,錯誤是我沒有將NumHampersMade從int更改爲double。謝謝! rep + – Tyrandis

1

將除數轉換爲更大的數據類型,例如int a 7,b = 9; double ave = a /(double)b。或者v

相關問題