能解决题目的代码并不是一次就可以写好的

我们需要根据我们的思路写出后通过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

结果:

四、彩蛋

【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出的更多相关文章

  1. 【视频+图文】Java经典基础练习题(六):猴子吃桃子问题

    目录 一.具体题目 二.视频讲解 三.思路分析(逆向思维) 四.代码+结果 代码: 结果: 五.彩蛋 一.具体题目 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个  第二天 早上又将剩下 ...

  2. Java语言基础(三)

    Java语言基础(三) 一.    补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...

  3. Java 多线程基础(三) start() 和 run()

    Java 多线程基础(三) start() 和 run() 通过之前的学习可以看到,创建多线程过程中,最常用的便是 Thread 类中的 start() 方法和线程类的 run() 方法.两个方法都包 ...

  4. python基础练习题(输入三个整数x,y,z,请把这三个数由小到大输出)

    day3 --------------------------------------------------------------- 实例005:三数排序 题目: 输入三个整数x,y,z,请把这三 ...

  5. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  6. 超全面!1.5w字总结50个Java经典基础面试题(已根据知识点分类)

    大家好,我是fancy. 在面试中将基础问题回答好就是成功的一半. 我总结了50道经典的Java基础面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了. 小伙伴们点赞 ...

  7. Java的基础知识三

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  8. java并发基础(三)--- 任务执行

    第6章开始是第二部分,讲解结构化并发应用程序,大多数并发应用程序都是围绕“任务执行”构造的,任务通常是一些抽象的且离散的工作单元. 一.线程池 大多数服务器应用程序都提供了一种自然的任务边界:以独立的 ...

  9. Java经典基础与高级面试36题和答案

    1.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实 ...

随机推荐

  1. module in JavaScript

    JavaScript 在ES6之前没有给出官方模块的定义,因此社区自己搞了两个模块加载方案: CommonJS (node) AMD (browser) 本文略 CommonJS规范 module定义 ...

  2. udev更改按键映射

    通过更改udev的规则实现敲击a键获得s的输出 安装evtest   首先安装evtest检测键盘的扫描码 123456789 # apt install evtest# sudo evtestNo ...

  3. redis BLPOP

    一.需求 redis中保存了需要download的image url,存储格式为列表. 我需要从列表中获取数据,将图片下载保存到本地. 列表中的数据是一直增加的. 二.实现 使用redis BLPOP ...

  4. 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(原创)

    如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要.可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS ...

  5. cocoapods iOS类库管理工具的安装与使用

    CocoaPods是一个管理Swift和Objective-C的Cocoa项目的依赖工具.他可以优雅地帮助你扩展你的项目.简单的说,就是替你管理Swift和Objective-C的Cocoa项目的第三 ...

  6. metrics模块

    class sklearn.metrics 方法 1.分类问题的度量 metrics.accuracy_score metrics.auc metrics.f1_score metrics.preci ...

  7. Ubutun18.04安装Python3.7.6

    最近因为环境问题,简单记录下Python3.7的安装过程: 下载地址:http://python.org/ftp/python/3.7.6/Python-3.7.6.tgz 编译安装步骤: sudo ...

  8. JMeter-WebService接口的测试

    前言 JMeter3.2版本之后就没有SOAP/XML-RPC Request插件了,那么该如何进行webservice接口的测试呢? 今天我们来一起学习一下怎么在3.2以后版本的JMeter进行we ...

  9. Slog64_项目上线之ArthurSlog个人网站上线3

    ArthurSlog SLog-64 Year·1 Guangzhou·China September 9th 2018 ArthurSlog Page GitHub NPM Package Page ...

  10. 一些大厂的css reset 代码

    不同的浏览器对标签的默认值不同,为了避免页面出现浏览器差异,所以要初始化样式表属性.使用通配符*并不可取,因为会遍历到每一个标签,大型网页会加载过慢,影响性能. 雅虎工程师提供的CSS初始化示例代码: ...