我正在尝试创建一个程序,用户输入一个整数,然后程序为每个地方添加8(模10)。
输入 4444 会导致 2222 ,而 1111 会导致 9999 。
由于我不想在循环遍历每个地方(数千,数十,1等)之前将输入转换为字符串,我不知道这是否涉及循环通过一维数组。我将如何在java或伪代码中执行此操作?
答案 0 :(得分:1)
// length = the length of the number, you can get it by log function
int ans = 0;
for (int i = 0; i < length; ++i) {
new_digit = ((number / Math.pow(10, i)) % 10 + 8) % 10;
ans += new_digit * Math.pow(10, i);
}
答案 1 :(得分:1)
取10的余数得到单位数字,删除单位数除以10。
离。
1234 % 10 = 4 <--first digit
1234 / 10 = 123 <-- next number
123 % 10 = 3 <--second digit
123 / 10 = 12 <-- next number
答案 2 :(得分:0)
我不想破坏你的解决方案,但我可以给你一个提示:
正如您所知,您可以通过Number % 10
获得最正确的数字,例如9999 % 10 = 9
,对吧?
并且除以10“切”最右边的数字,例如9999 / 10 = 999
。
这意味着,如果您的最后一个除法等于0,您应该已经完成了所有数字。这样做可以分别处理所有数字。困难的部分是将这些单个数字放在一起,如果你“记住”它们的十进制幂,这是可以实现的。这至少是一种完全数字化的方法,而不使用字符串或任何东西。
答案 3 :(得分:0)
解决方案可以使用模数和分区的组合来完成,不需要数组......
在示例中,我将要添加的数字(在您的情况下为8)定义为“可加性”(随意重命名)
public static void main(String[] args) {
int additivity = 8;
int k = 4321;
int result = 0;
System.out.println("The Original number:\n" + k);
for (int i = 1; i < 5; i++) {
result = (k % (int) Math.pow(10, 5 - i)) / (int) Math.pow(10, (4 - i));
System.out.print((result + additivity) >= 10 ? (result + additivity) % 10 : (result + additivity));
}
}