如何从 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;

live demo

您可以对每个数字进行 in-place 替换,但逻辑稍微复杂一些。