【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出
能解决题目的代码并不是一次就可以写好的
我们需要根据我们的思路写出后通过debug模式找到不足再进行更改
多次测试后才可得到能解决题目的代码!
通过学习,练习【Java基础经典练习题】,让我们一起来培养这种解决问题思路。
一、视频讲解
二、思路分析
Q1:如何从键盘输入3个整数?
A1: 键盘输入需使用Scanner语句,使用Scanner语句需以下4步骤
- 导包(可以在第二步创建后按住“Ctrl+shift+O”来自动导包)
import java.util.Scanner; - 创建 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: 这个问题的回答就是解题的核心啦!
- 因为本题要求是从小到大输出3这个数,我们先将我们从键盘输入的数用3个变量x、y、z来保存。
- 所以我们的基本思路就是:让3个数经过一系列变化后
x:存放3数中最小的那个数
y:存放三数中处在中间位置的数
z:存放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为例
- x=6,y=48 不满足第一个if语句条件
if(x>y)
- 所以不执行第一个if语句,继续向下执行。此时x,y,z的值为:6 48 -2
- 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
- 继续下一个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
- 此时xyz的值已是从小到大的顺序,我们输出此时的x y z:-2 6 48
结果:
四、彩蛋

【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出的更多相关文章
- 【视频+图文】Java经典基础练习题(六):猴子吃桃子问题
目录 一.具体题目 二.视频讲解 三.思路分析(逆向思维) 四.代码+结果 代码: 结果: 五.彩蛋 一.具体题目 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天 早上又将剩下 ...
- Java语言基础(三)
Java语言基础(三) 一. 补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...
- Java 多线程基础(三) start() 和 run()
Java 多线程基础(三) start() 和 run() 通过之前的学习可以看到,创建多线程过程中,最常用的便是 Thread 类中的 start() 方法和线程类的 run() 方法.两个方法都包 ...
- python基础练习题(输入三个整数x,y,z,请把这三个数由小到大输出)
day3 --------------------------------------------------------------- 实例005:三数排序 题目: 输入三个整数x,y,z,请把这三 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 超全面!1.5w字总结50个Java经典基础面试题(已根据知识点分类)
大家好,我是fancy. 在面试中将基础问题回答好就是成功的一半. 我总结了50道经典的Java基础面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了. 小伙伴们点赞 ...
- Java的基础知识三
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- java并发基础(三)--- 任务执行
第6章开始是第二部分,讲解结构化并发应用程序,大多数并发应用程序都是围绕“任务执行”构造的,任务通常是一些抽象的且离散的工作单元. 一.线程池 大多数服务器应用程序都提供了一种自然的任务边界:以独立的 ...
- Java经典基础与高级面试36题和答案
1.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实 ...
随机推荐
- Pygame相关
pygame是主要构筑在SDL库基础上的一组Python模块的集合,它使我们能够用Python语言来创建功能完整的游戏和多媒体程序.pygame是高度括平台可移植的,在任何SDL支持的平台上都可以运行 ...
- 初学Qt——vs2012开发环境下的窗体跳转
最近接了份外快,要求使用vs+qt开发一个简单的数据管理系统.qt开发使用的语言是c++,然而c++只是大一第二学期有教过而已,基本也差不多忘光了,废话不多说,讲下今天遇到的问题吧 如标题所说,窗体跳 ...
- 30s源码刨析系列之函数篇
前言 由浅入深.逐个击破 30SecondsOfCode 中函数系列所有源码片段,带你领略源码之美. 本系列是对名库 30SecondsOfCode 的深入刨析. 本篇是其中的函数篇,可以在极短的时间 ...
- 6487. 【GDOI2020模拟02.29】列强争霸war
题目描述 区间绝对众数 即出现次数>len/2下取整的数 对于区间[L,R]扫一遍,维护一个数x和出现次数s 当前数=x则s+1,否则s-1,若s已为0则把x设为当前数 若区间内存在绝对众数,那 ...
- org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xE2\x80\x8B\xE2\x80\x8B...' for column 'pro_backgroud' at row
如果你在mysql数据库中,将所有的表的编码格式设置成为utf-8之后还是不行,那就试试这个吧:ALTER TABLE your_database_name.your_table CONVERT TO ...
- 《OneForAll框架搭建之旅》前端篇:微前端架构设计(Vue)
心之所向,勇往直前!记录开发过程中的那些小事,给自己加点经验值. 前言 作为一个.Net后端开发,在竞争愈加激烈的当下,掌握点前端配菜好像已经是家常便饭了. 刚好在工作的第5个年头,辞去小主管职务的我 ...
- 在WPF(core版本)中引用外部字体不可用问题说明
这几天使用WPF写软件,想引用外部字体,于是下载了字体文件: 然后在App.xaml中添加了如下代码: <FontFamily x:Key="Digital-7 Mono"& ...
- 从头认识js-js中的继承
要彻底弄明白js中的继承,我们首先要弄清楚js中的一个很重要的概念那就是原型链. 1.什么是原型链? 我们知道每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型 ...
- Android开发 run的时候出现waiting for debugger的情况,及解决问题
出现原因:不清楚,大概推测是因为缓存没有清除干净 解决方法: 方法一. 重新启动模拟器 好像就点右上角的x符号是没有用的,因为会保存状态,在关闭之后还要点击Cold Boot Now,冷启动,才会把之 ...
- BEM命名及其在sass中的实践
Why use it 近几年web应用的发展可以用疯狂来形容,依靠浏览器的支持以及前端技术和框架的发展,很多应用已经把大量的逻辑从服务器端迁移到了浏览器端,使用前后端分离技术,浏览器端与用户进行交互来 ...