这是我到目前为止所拥有的;我必须使用这种主要方法。
public class HW4 {
public static boolean isDivisibleByThree(String n) {
int sum = 0;
int value;
for (int k = 0; k < n.length(); k++) {
char ch = n.charAt(k);
value = Character.getNumericValue(ch);
sum = sum*value;
}
return sum*3 == 0;
}
}
它总是出现真实,我真的被困在这一部分。所以,如果可以的话,你可以帮助我吗?
答案 0 :(得分:1)
总和是累积添加(不是乘法)。
更改此行:
sum = sum * value;
到
sum = sum + value;
或更简短的版本:
sum += value;
答案 1 :(得分:0)
两件事:
sum = sum * value
?这应该是sum = sum + value
或短sum += value
sum * 3 == 0
应该是sum % 3 == 0
如果您被要求不使用%
运营商,您可以选择:
double check = (double)sum / 3.0;
return check == (int)check;
负数的问题是-
也被解析了,你可以通过删除它来制作它:
if (n[0] == '-') {
n = n.substring(1);
}
如果符号为负,则会丢弃该符号,否则不执行任何操作。
答案 2 :(得分:0)
更简单的解决方案:使用mod-function:
int number = int.Parse(input);
bool result = (number % 3 == 0);
答案 3 :(得分:0)
除非我遗漏了某些内容,否则您首先要使用Integer.parseInt(String)
来解析int
中的String
。然后,您可以使用整数除法将该值除以3。最后,测试该数字乘以3是否为原始值。
int value = Integer.parseInt(n);
int third = value / 3;
return (value == third * 3);