JAVA基础语法编程详解

4.交换变量值

题目描述

  • 描述 在不使用第三个变量的情况下交换两个int类型变量的值
  • 输入描述: a变量和b变量的值
  • **输出描述:**交换后a变量和b变量的值,中间用空格隔开
  • 示例:
    输入: 10 5
    输出: 5 10

解题思路

思路一: 使用加法实现

java 复制代码
a = a + b;//a现在的值为a+b和的值
b = a - b;//b现在的值为a的值--->b=a+b - b = a;
a = a - b;//a现在的值为b的值--->a=a+b - a = b;

思路二: 使用加法实现(简单版)

java 复制代码
a += b - (b = a);

思路三: 使用异或实现

java 复制代码
a = a ^ b;  //a现在的值为异或后的结果
b = a ^ b;  //异或后的结果在与b异或,结果为a
a = a ^ b;  //异或后的结果在与a异或,结果为b

思路四: 使用异或实现(简单版)

java 复制代码
a ^= b ^ (b = a);

核心思路:题目要求不使用第三方变量,则需要将两个变量的值以某种规则变为一个值后赋值给一个变量,与另一个变量完成交换,最后完成整个交换。

代码实现

思路一: 使用加法实现

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

        //write your code here.......
        a = a + b;//a中为和的值
        b = a - b;//b中为a的值
        a = a - b;//a中为b的值

        System.out.println(a+" "+b);
    }
}

思路二: 使用加法实现(简单版)

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

        //write your code here.......
        a += b - (b = a);

        System.out.println(a+" "+b);
    }
}

思路三: 使用异或实现

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

        //write your code here.......
        a = a ^ b;  //a现在的值为异或后的结果
        b = a ^ b;  //异或后的结果在与b异或,结果为a
        a = a ^ b;  //异或后的结果在与a异或,结果为b    

        System.out.println(a+" "+b);
    }
}

思路四: 使用异或实现(简单版)

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

        //write your code here.......
        a ^= b ^ (b = a);   

        System.out.println(a+" "+b);
    }
}
相关推荐
nashane5 分钟前
HarmonyOS 6学习:PC端悬浮窗模式与智能长截图的协同优化实战
学习·华为·harmonyos
python在学ing7 分钟前
前端-CSS学习笔记
前端·css·python·学习
nJI74egg18 分钟前
JavaEE初阶---《JUC 并发编程完全指南:组件用法、原理剖析与面试应答》
java·面试·java-ee
刮风那天16 分钟前
Android AMS创建进程不用Binder而用Socket?
android·java·binder
程序员老邢22 分钟前
【技术底稿 37】Spring Boot 3.x 自动装配 “死锁” 排查:3 个注解实现条件化装配与 Mock 兜底
java·spring boot·后端·自动装配·rag·技术底稿
三品吉他手会点灯28 分钟前
C语言学习笔记 - 35.数据类型 - printf函数的非输出控制符与格式优化
c语言·开发语言·笔记·学习
日月云棠37 分钟前
JAVA数据结构与算法 - 基础:链表
java·后端
日月云棠41 分钟前
JAVA数据结构与算法 - 基础:栈 (Stack) 深度解析
java·后端
xiguolangzi43 分钟前
java使用Map映射遍历方法
java·后端
日月云棠1 小时前
JAVA数据结构与算法 - 基础:队列 (Queue) 全方位解析
java·后端