如何对java中由Scanner生成的值执行算术运算?

问题描述:

我真的想知道如何添加,乘或除使用扫描仪类,因为我每次运行它总是给我的代码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

这是因为整数除法会总是舍入,因为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

将除数转换为更大的数据类型,例如int a 7,b = 9; double ave = a /(double)b。或者v