【问题标题】:How to calculate the double of digits from an integer in Java?如何从Java中的整数计算两位数?
【发布时间】:2020-10-09 20:36:51
【问题描述】:

我是 Java 初学者,正在努力学习。我有一个整数,我想从中计算每个数字的双倍,然后用整数恢复答案。我认为我必须使用 for() 循环和 tempvalue。我有号码 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);
}}}

【问题讨论】:

  • @Spectric 我没有 Java 经验,这是我最好的尝试。我试图将每个数字分开并将其加倍,但它不起作用。
  • 很抱歉。我相信我的回答可能会有所帮助。

标签: java for-loop integer


【解决方案1】:

因为双位数只有在每个位数小于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

您可以对每个数字进行就地替换,但逻辑要复杂一些。

【讨论】:

  • 谢谢你,第二个答案很完美,虽然我不明白你是怎么用''column''的。
  • column 是数字列,它遍历十的幂:1, 10, 100, 1000, ...
【解决方案2】:

您当前提供的代码一切正常 - 除了您在循环中执行的操作。

在您的示例中,您正在执行int tempvalue=(num%10*2)/10;。我很确定你不确定你在做什么。这条线所做的是得到数字除以 10 的余数,乘以 2,然后除以 then。我似乎无法理解您为什么要这样做,所以我将提供自己的解决方案。

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 并乘以 2 后追加。

在上面的例子中,程序产生:

2468

当测试用例是:

1234

而当测试用例是:

9999

结果是:

18181818

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2013-01-28
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多