【问题标题】:How to swap digits in java如何在java中交换数字
【发布时间】:2015-06-09 18:35:51
【问题描述】:

我正在尝试在夏天练习 Java,但我被这个问题困住了。我需要在 java 中交换整数中的 2 个字母。例如,在我的 main 方法中,我创建了一个名为 swapdigits 的方法,并将我的参数设置为 1432。程序应该交换 4 和 1 以及 3 和 2。输出应该是 4123,因为它按顺序交换了两个字母。假设我做了swapdigits(1341234),输出应该是3114324。我知道我必须使用while循环,但我卡在了交换上。

这是我目前所拥有的:

public static void main(String[] args) {
    Swapdigits(2413);

}
public static void Swapdigits(int number){

    while(number>0){
        int y=number/1000;
        int x=number%10;
        int original=number-y;
        System.out.println(original);
    }
     System.out.println();
    }

}

【问题讨论】:

  • 你可以使用String吗?然后把original数字转换成String就容易多了。
  • 我喜欢编程中的“允许”这个词 :)
  • 我希望我是,但遗憾的是我不是

标签: java for-loop while-loop


【解决方案1】:
public static int swapDigitPairs(int number) {
    int result = 0;
    int place = 1;
    while (number > 9) {
        result += place * 10 * (number % 10);
        number /= 10;
        result += place * (number % 10);
        number /= 10;
        place *= 100;
    }
    return result + place * number;
}

你也可以试试

char[] a = String.valueOf(number).toCharArray();
for (int i = 0; i < a.length - 1; i += 2) {
    char tmp = a[i];
    a[i] = a[i + 1];
    a[i + 1] = tmp;
}
int number = Integer.parseInt(new String(a));

【讨论】:

  • @Coldude 如果数字有奇数位数,它应该保留第一个数字,我还包括了涉及数组的第二个解决方案。
  • 如果不起作用,请不要接受。这可能会使搜索相同问题的其他用户感到困惑。但是您可能会赞成好的答案/努力。或者,如果对给定答案进行一些修改对您有用,则相应地更新答案。
【解决方案2】:

因为您只是交换数字的位置,所以实际上数字是什么并不重要。因此,将参数表示为字符串可能更容易(并且更有意义)。这样你就不会处理奇怪的模运算符 - 如果你手动解决问题,你真的会做任何数学吗?无论是一堆字符的数字,你都会以同样的方式对待这个问题。

查看以下问题以获取有关在字符串中交换字符的信息: How to swap String characters in Java?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多