如何从 Java 中的整数计算两位数?
How to calculate the double of digits from an integer in Java?
我是 Java 的初学者,正在努力学习。我有一个整数,我想从中计算每个数字的两倍,然后将答案恢复为整数。我认为我必须使用 for() 循环和临时值。我有号码 1234,我需要得到 2468。
我这样做了,我得到了 1234。有人能找到问题吗,我对索引概念不太了解。
public class Doublevalue {
public static void main(String[] args) {
num=1234;
for(int i=0;num<0;i++) {
int tempvalue=(num%10*2)/10;
num=tempvalue;
System.out.print(num);
}}}
您当前提供的代码一切正常 - 除了您在循环中所做的事情。
在您的示例中,您正在执行 int tempvalue=(num%10*2)/10;
。我很确定你不确定自己在做什么。该行所做的是得到数字除以 10 后的余数,乘以 2,然后除以 2。我似乎无法理解你为什么要这样做,所以我会提供我自己的解决方案。
public class DoubleDigits {
public static void main(String[] args) {
DoubleDigits dd = new DoubleDigits();
System.out.println(dd.doubleDigits(1234));
}
public int doubleDigits(int number) {
StringBuilder str = new StringBuilder();
String testCase = String.valueOf(number);
for(int i = 0; i < testCase.length(); i++) {
int digit = Integer.parseInt(String.valueOf(testCase.charAt(i)))*2;
str.append(digit);
}
return Integer.parseInt(str.toString());
}
}
这是怎么回事?
首先,我们将数字转换为字符串,这样我们就可以获得每个单个字符(作为数字)。 for 循环 将循环遍历每个字符,我们可以使用 StringBuilder 将字符解析为 int 并乘以二后追加该字符。
在上面的例子中,程序产生:
2468
当测试用例为:
1234
而当测试用例为:
9999
结果是:
18181818
因为双位数只有当每个数字都小于5时才有效,解决方案可以只是
num *= 2;
但是如果你想分别对待每个数字,你需要做这样的事情:
int tmp = 0;
for (int column = 1; num > 0; column *= 10) {
tmp += (num % 10) * column * 2;
num /= 10;
}
num = tmp;
您可以对每个数字进行 in-place 替换,但逻辑稍微复杂一些。
我是 Java 的初学者,正在努力学习。我有一个整数,我想从中计算每个数字的两倍,然后将答案恢复为整数。我认为我必须使用 for() 循环和临时值。我有号码 1234,我需要得到 2468。 我这样做了,我得到了 1234。有人能找到问题吗,我对索引概念不太了解。
public class Doublevalue {
public static void main(String[] args) {
num=1234;
for(int i=0;num<0;i++) {
int tempvalue=(num%10*2)/10;
num=tempvalue;
System.out.print(num);
}}}
您当前提供的代码一切正常 - 除了您在循环中所做的事情。
在您的示例中,您正在执行 int tempvalue=(num%10*2)/10;
。我很确定你不确定自己在做什么。该行所做的是得到数字除以 10 后的余数,乘以 2,然后除以 2。我似乎无法理解你为什么要这样做,所以我会提供我自己的解决方案。
public class DoubleDigits {
public static void main(String[] args) {
DoubleDigits dd = new DoubleDigits();
System.out.println(dd.doubleDigits(1234));
}
public int doubleDigits(int number) {
StringBuilder str = new StringBuilder();
String testCase = String.valueOf(number);
for(int i = 0; i < testCase.length(); i++) {
int digit = Integer.parseInt(String.valueOf(testCase.charAt(i)))*2;
str.append(digit);
}
return Integer.parseInt(str.toString());
}
}
这是怎么回事?
首先,我们将数字转换为字符串,这样我们就可以获得每个单个字符(作为数字)。 for 循环 将循环遍历每个字符,我们可以使用 StringBuilder 将字符解析为 int 并乘以二后追加该字符。
在上面的例子中,程序产生:
2468
当测试用例为:
1234
而当测试用例为:
9999
结果是:
18181818
因为双位数只有当每个数字都小于5时才有效,解决方案可以只是
num *= 2;
但是如果你想分别对待每个数字,你需要做这样的事情:
int tmp = 0;
for (int column = 1; num > 0; column *= 10) {
tmp += (num % 10) * column * 2;
num /= 10;
}
num = tmp;
您可以对每个数字进行 in-place 替换,但逻辑稍微复杂一些。