Java编程那些事儿39—流程控制综合示例

5.6 综合示例

在一般的学校学习流程控制时,重点是放在流程控制的相关语法,其实为了能成为一个合格的程序员,仅仅学好语法是远远不够的,还需要通过大量的练习来适应程序设计语言的思维方式,并且熟练地把自己的解决问题的步骤形成代码,这些都需要通过大量的阅读代码和编写代码来实现。

所以在学习流程控制时,重点是解决实际的问题,而不是仅仅停留在语法层面上,这个是很多在校学生学习程序时最突出的一个问题。

在遇到一个实际问题时,首先要能够思考出解决这个问题的数学步骤或逻辑步骤,然后才能编写对应的代码,所以遇到实际问题是,一定要积极思考,并且善于思考,对于一个相同的问题,不同的逻辑就可以写出不同的代码,所以在思考解决问题的方式时,需要进行发散性的思维,而这些理性的思维很多都是建立在数学基础以及对语法的熟悉基础之上。

下面,通过一系列的实际问题,来说明解决实际问题的步骤以及书写的对应的代码。

5.6.1 示例讲解

5.6.1.1 最大公约数

问题:求两个自然数的最大公约数。

这两个都是基础的数学问题,最大公约数指两个数字公共的约数中最大的,例如数字6的约数有1、2、3、6,数字9的约数有1、3、9,则数字6和数字9的公共约数有1和3,其中3是最大的公约数。

第一种思路:从1开始循环,每次把符合要求(即同时是两个数字的约数)的值都存储起来,那么最后一个存储起来的就是最大的约数。

则实现的代码如下:

int n = 6;
int m = 9;
int result = 1;
for(int i = 1;i <= n;i++){
 if((n % i == 0) && (m % i == 0)){
  result = i;
 }
}
System.out.println(result);

使用该思路,每次都存储得到的公共约数,那么最后一个存储的就是两个数字的最大公约数。

第二种思路:从两个数字中最小的数字开始循环,每次减1,那么第一次得到的公共约数就是所求的最大公约数。

则实现的代码如下:

int n = 6;
int m = 9;
int result = n > m ?m : n;
for(int i = result;i >= 1;i--){
 if((n % i == 0) && (m % i == 0)){
   result = i;
   break;//结束循环
 }
}
System.out.println(result);

当然,解决这个问题,还有很多其它的方法,这里演示的这两种实现只是最自然的实现而已,采用类似的原理也可以求两个数字的最小公倍数的结构。

时间: 2025-01-27 07:16:46

Java编程那些事儿39—流程控制综合示例的相关文章

Java编程那些事儿41—流程控制综合示例3

5.6.1.5 99乘法表 问题:在控制台打印数学上的99乘法表 该类问题是发现数字的规律,然后将数值的规律用程序描述出来.实际实现时,可能需要耐心的进行调试.在这里,需要实现数字的多行输出,前面使用的System.out.println是输出内容并换行,后续再输出的内容就再下一行显示,如果需要在输出时不换行,则可以使用System.out.print进行输出. 99乘法表的规则是总计9行,每行单独输出,第一行有1个数字,第二行有2个数字,依次类推,数字的值为行号和列号的乘积. 实现思路:使用一

Java编程那些事儿40—流程控制综合示例2

5.6.1.3 喝汽水问题 问题:共有1000瓶汽水,每喝完后一瓶得到的一个空瓶子,每3个空瓶子又能换1瓶汽水,喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩余多少个空瓶子? 这个问题其实是个比较典型的递推问题,每3个空瓶都可以再换1瓶新的汽水,这样一直递推下去,直到最后不能换到汽水为止. 第一种思路:每次喝一瓶,每有三个空瓶子就去换一瓶新的汽水,直到最后没有汽水可以喝为止.在程序中记忆汽水的数量和空瓶子的数量即可. 则实现的代码如下: int num = 1000; //汽水数量 i

Java编程那些事儿42—流程控制综合练习

5.6.2 综合练习 本部分是一些整理的关于流程控制部分的综合练习,可以通过这些练习熟悉Java语言的基本语法,以及锻炼逻辑思维能力. 练习题: 1.计算数字12和18的最小公倍数. 2.如果苹果 1元/个, 桔子 2 元/个, 芒果 4元/个,若是用10元去买,有几种组合呢? 3.一只猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个,第10天早上想再吃时,发现只剩下一个桃子了.请问猴子第一天一

Java编程那些事儿30—流程控制基础

第五章流程控制 流程就是指程序执行的顺序,流程控制就是指通过控制程序执行的顺序实现要求的功能.流程控制部分是程序中语法和逻辑的结合,也是程序中最灵活的部分,是判断一个程序员能力的主要方面. 众所周知,算法是程序逻辑的核心,而算法的绝大部分代码都是流程控制实现的. 流程控制就是将程序员解决问题的思路,也就是解决问题的步骤,使用程序设计语言的语法格式描述出来的过程. 5.1 流程控制基础 流程控制在程序语言实现时,通过三类控制语句进行实现: l顺序语句 顺序语句是一种自然的语句,没有特定的语法格式,

Java编程那些事儿52—方法声明

第七章 方法 方法(method),在面向过程的语言中称作函数(function),在汇编语言中称作子程序,是一个代码功能块,实现某个特定的功能.在实际的程序开发中,方法是一种基础的组织代码的方式.本部分就介绍方法相关的概念.相关语法以及实际使用时需要注意的问题. 7.1 方法概述 方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1.2.3.--这样的一个数列.在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应.

Java编程那些事儿25—位运算符

4.5 二进制运算符 由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符. 使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程.硬件编程等领域. 二进制运算符在数学上的意义比较有限. 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进

Java编程那些事儿3——你适合学习程序设计吗?

 Java编程那些事儿3--你适合学习程序设计吗?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          程序设计是一个技术活,所以不是适合所有的人.现在很多人听说程序设计人员待遇如何如何的好,都一窝蜂的来学习程序,其实这个现象很不正常,因为程序不一定适合你.其实对于一个人来说,适合你的才是最好的.         就像现在很多小孩子都被家长逼着去学钢琴啊什么,有些小孩根本没有艺术细胞的,所以学习的效果就是差强人意了.         其实程序设计最需要

Java编程那些事儿4——如何学好程序设计?

  Java编程那些事儿4--如何学好程序设计?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          俗话说"兴趣是最好的老师",但是只靠兴趣是远远不够的,还需要付出艰辛的努力.程序设计是一种技能,需要在较短的时间内学会,就不能像学习汉语一样,通过十几年甚至更长的时间来学好,也不能像英语那样进行业余学习,以至很多大学毕业的人英语水平也不敢恭维,也达不到实用的程度.         那么如何学好程序设计呢?或者更现实一点,如何在短时间内成为一个

Java编程那些事儿1——序言

 序言          从大学毕业到现在,马上就六年了,这六年中从事过开发,也从事培训工作,相比而言,参加培训工作的时间要长一些.由于工作的特点,遇到了各种各样的学生,在学习编程时遇到了一系列的问题,也有很多迷茫的时候,希望通过编写本书,把相关的问题进行一下总结,把自己的经验和大家进行分享.当然由于一些知识也只是个人见解,也希望大家积极指正,帮助编程的初学者,以及程序开发人员深刻理解基础的概念,更好的学习编程和从事开发工作.         编写一本书,总要有个名字吧,姑且把书名叫做<Java