zoukankan      html  css  js  c++  java
  • 【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出

    能解决题目的代码并不是一次就可以写好的
    我们需要根据我们的思路写出后通过debug模式找到不足再进行更改
    多次测试后才可得到能解决题目的代码!
    通过学习,练习【Java基础经典练习题】,让我们一起来培养这种解决问题思路。

    一、视频讲解

    点击这里即可去B站观看

    二、思路分析

    Q1:如何从键盘输入3个整数?

    A1: 键盘输入需使用Scanner语句,使用Scanner语句需以下4步骤

    1. 导包(可以在第二步创建后按住“Ctrl+shift+O”来自动导包)
      import java.util.Scanner;
    2. 创建 Scanner sc = new Scanner (System.in); (sc是对象的名字,只要符合命名规则可更换)
      3. 使用(这里介绍的是最简单是使用方法)
      (1) 获取键盘输入的int型数字 int num = sc.nextInt();
      (2) 特殊: 获取键盘输入的字符串 String str = sc.next();
      4. 使用完毕,关闭键盘输入 sc.close();(即对象名.close())

    Q2:只输出最大数或最小数,我可以搞定。但是如何将这三个数由小到大都输出呢?

    A2: 这个问题的回答就是解题的核心啦!

    1. 因为本题要求是从小到大输出3这个数,我们先将我们从键盘输入的数用3个变量x、y、z来保存。
    2. 所以我们的基本思路就是:让3个数经过一系列变化后
      x:存放3数中最小的那个数
      y:存放三数中处在中间位置的数
      z:存放3数中最大的数
    3. 接下来我们就来讲讲3个数怎样经过一系列变化达到我们的目的,
      以x=45、y=27、z=15为例:
    • 我们先让x与y比较
      若x>y,就让x和y交换位置(一定要记得我们的终极目的:3个数中的小数存放在x中
      此次x=45、y=27所以我们使其交换位置
      x=45、y=27、z=15 → x=27、y=45、z=15
    • 继续x与z进行比较
      若x>z,就让x和z交换位置(一定要记得我们的终极目的:3个数中的小数存放在x中
      此次x=27、z=15所以我们使其交换位置
      x=27、y=45、z=15 → x=15、y=45、z=27
    • 继续y与z进行比较
      若y>z,就让y和z交换位置(一定要记得我们的终极目的:3个数中的小数存放在x中
      此次y=45、z=27所以我们使其交换位置
      x=15、y=45、z=27 → x=15、y=27、z=45
      经过3次比较,最终这3个数的顺序就是由小到大的了。

    总结:

    让x与y比较,若x>y,就让x和y交换位置
    让x与z比较,若x>z,就让x和z交换位置
    让y与z比较,若y>z,就让y和z交换位置

    三、代码+详解+结果

    代码:

    package Exercise;
    
    import java.util.Scanner;
    
    public class ThreeNumberSort {
    //	题目:输入3个整数,并将其由小到大输出
    	public static void main(String[] args) {
    		int temp=0;
    		Scanner sc = new Scanner(System.in);//使用Scanner键盘输入
    		System.out.println("请输入3个整数");
    		int x = sc.nextInt();//将键盘输入的第一个数保存在int型x变量中
    		int y = sc.nextInt();//将键盘输入的第二个数保存在int型y变量中
    		int z = sc.nextInt();//将键盘输入的第三个数保存在int型z变量中
    		sc.close();//使用完键盘输入后关闭
    		if(x>y) {//如果x>y那么x,y需要交换位置
    			temp=x;//借助temp变量,将二者间的大数x存在temp中
    			x=y;//让小数y到x的位置
    			y=temp;//让大数x(即此时的temp)到y的位置,这时x y中的数就是从小到大的顺序
    		}
    		
    		if(x>z) {//如果x>z那么x,z需要交换位置
    			temp=x;//借助temp变量,将二者间的大数x存在temp中
    			x=z;//让小数z到x的位置
    			z=temp;//让大数x(即此时的temp)到z的位置,这时x z中的数就是从小到大的顺序
    		}
    		
    		if(y>z) {//如果y>z那么y,z需要交换位置
    			temp=y;//借助temp变量,将二者间的大数y存在temp中
    			y=z;//让小数z到y的位置
    			z=temp;//让大数y(即此时的temp)到z的位置,这时y z中的数就是从小到大的顺序
    		}
    		System.out.println(x+" "+y+" "+z);// 输出由小到大排序后的xyz三数
    	}
    
    }
    
    
    

    详解:

    以x:6 y:48 z:-2为例

    1. x=6,y=48 不满足第一个if语句条件if(x>y)
    • 所以不执行第一个if语句,继续向下执行。此时x,y,z的值为:6 48 -2
    1. x=6,z=-2满足第二个if语句条件if(x>z)
    • 所以执行if语句中的代码块:
    if(x>z) {//如果x>z那么x,z需要交换位置
    			temp=x;//借助temp变量,将二者间的大数x存在temp中
    			x=z;//让小数z到x的位置
    			z=temp;//让大数x(即此时的temp)到z的位置,这时x z中的数就是从小到大的顺序
    		}
    
    • 此时temp=6;
      x=-2
      z=6
      执行完这个if语句后x,y,z的值为:-2 48 6
    1. 继续下一个if语句判断,这时y=48,z=6
      满足第三个if语句条件if(y>z)
    • 所以执行if语句中的代码块:
    if(y>z) {//如果y>z那么y,z需要交换位置
    			temp=y;//借助temp变量,将二者间的大数y存在temp中
    			y=z;//让小数z到y的位置
    			z=temp;//让大数y(即此时的temp)到z的位置,这时y z中的数就是从小到大的顺序
    		}
    
    • 此时temp=48;
      y=6
      z=48
      执行完这个if语句后x,y,z的值为:-2 6 48
    1. 此时xyz的值已是从小到大的顺序,我们输出此时的x y z:-2 6 48

    结果:
    在这里插入图片描述

    四、彩蛋

    在这里插入图片描述

  • 相关阅读:
    开源搜索引擎Solr的快速搭建及集成到企业门户最佳实施方案--转载
    Java开发WebService的几种方法--转载
    HBase Java简单示例--转载
    Eclipse快捷键大全--转载
    Java中List、Set和Map的区别--转载
    ArrayList和Iterator的用法
    日期格式化
    java中的值传递和引用传递问题
    Servlet,过滤器,监听器,拦截器的区别
    Java过滤器与SpringMVC拦截器之间的关系与区别
  • 原文地址:https://www.cnblogs.com/Qpgshare/p/12588923.html
Copyright © 2011-2022 走看看