Java整数位移问题

Java 将整数的最后一位移到第一位,怎么表达,自认为像个十百千这样运算也不方便,会花费很长时间,有什么思路可以提供吗,谢谢啦

可以先把数字转为String,然后转字符,再交换第一位跟最后一位位置

img

 public static void main(String[] args) {
        int number = 12345;
        int result = test(number);
        System.out.println(result);
    }

    public static int test(int number) {
        String numStr = String.valueOf(number);
        char last= numStr.charAt(numStr.length() - 1);
        String modifiedStr = last+ numStr.substring(0, numStr.length() - 1);

        return Integer.parseInt(modifiedStr);
    }

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7677419
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Java简单程序之统计一个字符串大写字母字符,小写字符,数字字符出现的次数
  • 同时,你还可以查看手册:java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-注释是元数据的一种形式,为编译器提供信息。本课介绍了在程序中有效使用注释的地方和方法。-类型注解和可插拔类型系统 中的内容
  • 除此之外, 这篇博客: Java 基础面试题整理~持续更新中的 19、什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 序列化:把Java对象转换为字节序列的过程。
    • 反序列化:把字节序列恢复为Java对象的过程。

    对象的序列化主要有两种用途:

    • 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)
    • 在网络上传送对象的字节序列。(网络传输对象)

    Serializable 接口
    一个对象想要被序列化,那么它的类就要实现此接口或者它的子接口。
    这个对象的所有属性(包括private属性、包括其引用的对象)都可以被序列化和反序列化来保存、传递。不想序列化的字段可以使用transient修饰。
    由于Serializable对象完全以它存储的二进制位为基础来构造,因此并不会调用任何构造函数,因此Serializable类无需默认构造函数,但是当Serializable类的父类没有实现Serializable接口时,反序列化过程会调用父类的默认构造函数,因此该父类必需有默认构造函数,否则会抛异常。

  • 您还可以看一下 汪翠老师的java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码课程中的 给扑克牌绑定鼠标事件实现单击可以选择出牌列表小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答:

    感谢您的提问。要实现将一个整数的最后一位向左移,移到二进制数字的最高位,即第一位,可以使用位运算来实现,具体代码如下:

    public static int moveLastToFirst(int num) {
        // 获取num的二进制补码的位数
        int len = Integer.SIZE - Integer.numberOfLeadingZeros(num);
        // 将最后一位的数值(0或1)取出来,同时将原数最后一位清零
        int last = num & 1;
        num = num >> 1;
        // 将取出的数值移动到最高位
        num = num | last << (len - 1);
        return num;
    }
    

    对于实现原理,可以通过以下步骤实现:

    1. 先获取整数num的二进制补码的位数,这里使用Integer.SIZE以及Integer.numberOfLeadingZeros()方法来实现。
    2. 将最后一位的数值(0或1)取出来,同时将原数最后一位清零,这里使用位运算符&和>>实现。
    3. 将取出的数值移动到最高位,这里使用位运算符|和<<实现。
    4. 返回移动后的整数num。

    以上就是一个比较简单的实现,具体使用还需要根据实际情况进行调整。希望能够对您有所帮助!

你可以将整数转换为字符串,然后将字符串的最后一位移到第一位,再将其转换回整数。以下是一个示例代码:

public static int moveLastDigitToFirst(int n) {
    String s = Integer.toString(n);
    char last = s.charAt(s.length() - 1);
    String rest = s.substring(0, s.length() - 1);
    return Integer.parseInt(last + rest);
}


这个方法将整数转换为字符串,然后使用 charAt() 方法获取最后一位字符,使用 substring() 方法获取除最后一位字符外的其余字符。最后,将最后一位字符和其余字符连接起来并将其转换回整数。

public class Main {
    public static void main(String[] args) {
        int x = 900021;
        int z = x % 10;
        int y = x;
        while (y > 0) {
            y /= 10;
            z *= 10;
        }
        x = x / 10 + z / 10;
        System.out.println(x);
    }
}

img