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语句。它应该是一个简单的程序。
答案 0 :(得分:3)
myCents/100
是整数除法,因此如果myCents < 100
,myDollars
将为0. Therefire % myDollars
会抛出您的/ by zero
例外。
而是尝试:
myDollars = myCents / 100;
myCents = myCents % 100;
myQuarters = myCents / 25;
myCents = myCents%25;
等。 (假设一个季度是25美分......我从未使用过美元)
答案 1 :(得分:0)
由于模数运算符({{1}的性质,myDollars
,myDimes
,myNickels
或myPennies
中的任何一个都可能 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”。