除以零简单程序

时间:2015-03-01 16:58:34

标签: java

 public static void main(String [] args) {

 Scanner userInput = new Scanner(System.in);

 int myCents = 0;
 int myDollars = 0;
 int myQuarters = 0;
 int myDimes = 0;
 int myNickels = 0;
 int myPennies = 0;

 System.out.printf("Please enter the amount of cents below: \n");
 myCents = userInput.nextInt();

 myDollars = myCents/100;
 myQuarters = myCents % myDollars;
 myDimes = myCents % myQuarters;
 myNickels = myCents % myDimes;
 myPennies = myCents % myNickels;

 System.out.printf(myCents + " is equal to %4d", myDollars);
 System.out.printf(" dollar(s), " + myQuarters);
 System.out.printf(" quarter(s), " + myDimes);
 System.out.printf(" dime(s), " + myNickels);
 System.out.printf(" nickel(s) and " + myPennies + " pennies. \n");
}
}
Error:  java.lang.ArithmeticException: / by zero

错误似乎不断涌现。我们还没有学习Java语句。它应该是一个简单的程序。

5 个答案:

答案 0 :(得分:3)

myCents/100是整数除法,因此如果myCents < 100myDollars将为0. Therefire % myDollars会抛出您的/ by zero例外。

而是尝试:

myDollars = myCents / 100;
myCents = myCents % 100;
myQuarters = myCents / 25;
myCents = myCents%25;

等。 (假设一个季度是25美分......我从未使用过美元)

答案 1 :(得分:0)

由于模数运算符({{1}的性质,myDollarsmyDimesmyNickelsmyPennies中的任何一个都可能 0 }})。然后使用该值进行更多的模数运算,在返回余数之前有效地除以0。

你应该添加if语句。

答案 2 :(得分:0)

%modulus运算符。模运算需要先执行除法。在Java中,与许多其他编程语言一样,当整数为an error时,会抛出divided by zero

这是可能导致错误的第一行,很可能是由于用户输入零。

myQuarters = myCents % myDollars;

答案 3 :(得分:0)

我认为,您应该将变量转换为double

public static void main(String [] args) {

 Scanner userInput = new Scanner(System.in);

 double myCents = 0;
 double myDollars = 0;
 double myQuarters = 0;
 double myDimes = 0;
 double myNickels = 0;
 double myPennies = 0;

 System.out.printf("Please enter the amount of cents below: \n");
 myCents = userInput.nextInt();

 myDollars = myCents/100;
 myQuarters = myCents % myDollars;
 myDimes = myCents % myQuarters;
 myNickels = myCents % myDimes;
 myPennies = myCents % myNickels;

 System.out.printf(myCents + " is equal to %4f", myDollars);
 System.out.printf(" dollar(s), " + myQuarters);
 System.out.printf(" quarter(s), " + myDimes);
 System.out.printf(" dime(s), " + myNickels);
 System.out.printf(" nickel(s) and " + myPennies + " pennies. \n");
}

这应解决问题。

答案 4 :(得分:0)

someNumber % 0会产生java.lang.ArithmeticException。这可能发生在您的代码的几个地方。例如。如果用户输入的数字低于100,则myDollars将为“0”,或者如果用户输入“100”,则myDollars将为“1”,myQuarters将为“0”。

作为一般建议:除非您知道如何正确调试代码(我假设您尚未学习),否则您始终可以使用System.out.println(或System.out.printf)来检查值在某个点上你的变量。

在您的示例中,您可以例如在计算值之后立即移动System.out.printf语句,以便在抛出异常时查看哪个值正好为“0”。