二重循环+数组

1. 二重循环+数组

1.1. 常用的math方法

Math.random()  double 类型的随机小数 [0.0,1.0)

Math.abs() 计算绝对值  

四舍五入

static long

round(double a) 
          返回最接近参数的 long。

 

static int

round(float a) 
          返回最接近参数的 int。

 

 计算平方根

static double

sqrt(double a) 
          返回正确舍入的 double 值的正平方根。

 

取下限 “floor“  地板

 

static double

floor(double a) 
          返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。

 

取上限ceil“ 天花板

static double

ceil(double a) 
          返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。

 

/**

 * Math中的常用函数

 * @author Administrator

 *

 */

public class TestMath {

public static void main(String[] args) {

//计算绝对值

System.out.println(Math.abs(-3.5)); //3.5

System.out.println(Math.abs(3.5)); //3.5

//计算几次方法  43次方  double类型  

System.out.println(Math.pow(4, 3)); //64.0

//计算2个数的较大值

System.out.println(Math.max(2.3, 5.3)); //5.3

System.out.println(Math.max(-2.3, -5.3)); //-2.3

//计算2个数的较小值

System.out.println(Math.min(2.3, 5.3)); //2.3

System.out.println(Math.min(-2.3, -5.3));//-5.3

//计算四舍五入  Math.round(double类型的) 返回 的是long

System.out.println("==========四舍五入1 返回值 long===========");

System.out.println(Math.round(2.3)); //2

System.out.println(Math.round(-2.3)); //-2

//临界值注意

System.out.println(Math.round(2.5)); //3

System.out.println(Math.round(-2.5)); //-2

System.out.println(Math.round(2.7)); //3

System.out.println(Math.round(-2.7));//-3

//Math.round(float类型的) 返回的int类型

System.out.println("==========四舍五入2 返回值int ===========");

System.out.println(Math.round(2.3f)); //2

System.out.println(Math.round(-2.3f)); //-2

//临界值注意

System.out.println(Math.round(2.5f)); //3

System.out.println(Math.round(-2.5f)); //-2

System.out.println(Math.round(2.7f)); //3

System.out.println(Math.round(-2.7f));//-3

System.out.println("==========计算平方根===========");

System.out.println(Math.sqrt(9.0)); //3.0

System.out.println(Math.sqrt(2)); //近似等于1.414

//取对应的那个不能超过该数的最大整数(整数对应的double类型)

System.out.println("==========floor 取下限===========");

System.out.println(Math.floor(2.3)); //2.0

System.out.println(Math.floor(-2.3)); //-3.0

System.out.println(Math.floor(2.5));//2.0

System.out.println(Math.floor(-2.5));//-3.0

System.out.println(Math.floor(2.7)); //2.0

System.out.println(Math.floor(-2.7));//-3.0

//不能比该数小,大于等于该数,对应的整数(整数对应的double类型)

System.out.println("==========ceil 取上限===========");

System.out.println(Math.ceil(2.3)); //3.0

System.out.println(Math.ceil(-2.3)); //-2.0

System.out.println(Math.ceil(2.5));//3.0

System.out.println(Math.ceil(-2.5));//-2.0

System.out.println(Math.ceil(2.7)); //3.0

System.out.println(Math.ceil(-2.7));//-2.0

}

}

1.2. 二重循环

什么是二重循环?

循环内部嵌入另外一个循环

特性外层循环执行一次,内层循环执行一遍

需求:输出一个正方形,从控制台接收宽和高。

public class Test01 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("请输入矩形的高(行数)");

int height = input.nextInt();

System.out.print("请输入矩形的宽(一行的*的个数,列数):");

int width = input.nextInt();

//外层循环控制行数

for(int j=0;j<height;j++){

//内层循环控制的一行 *的个数

for(int i=0;i<width;i++){

System.out.print("* ");

}

System.out.println();

}

}

}

需求:生成宽度随机的正方形,边长范围从3~9。

public class Test02 {

public static void main(String[] args) {

//生成随机数

int width = (int)(Math.random()*7)+3;

//外层循环控制行数

for(int j=0;j<width;j++){

//内层循环控制的一行 *的个数

for(int i=0;i<width;i++){

System.out.print("* ");

}

System.out.println();

}

}

}

课堂练习:输出一个三角形,行数从控制台输入

*

***

*****

*******

//方式1

行号从0开始

1    0    2*0+1

3    1    2*1+1

5    2    2*2+1

7    3    2*3+1

Int n = input.nextInt();

For(int i=0;i<n;i++){

//每行*的个数有什么规律

For(int  j=0 ;j<2*i+1;j++){

 

}

 

}

public class Test03 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("请输入三角形的行数:");

int n = input.nextInt();

//[0,3] i=0j=0,j<1 ;i=1 j=0,j<3 j:[0,1,2] ,i=2 j=0,j<5,j:[0,1,2,3,4]

for(int i=0;i<n;i++){

for(int j=0;j<2*i+1;j++){

System.out.print("*");

}

System.out.println();

}

}

}

//方式2

行号从1开始

1    1    2*1-1

3    2    2*2-1

5    3    2*3-1

7    4    2*4-1

public class Test032 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("请输入三角形的行数:");

int n = input.nextInt();

//i=1 ,j=1,j<=1,j:[1]  i=2 ,j=1,j<=3,j:[1,2,3] , i=3 ,j=1,j<=5,j:[1,2,3,4,5]

for(int i=1;i<=n;i++){

for(int j=1;j<=2*i-1;j++){

System.out.print("*");

}

System.out.println();

}

}

}

方式3

public class Test033 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("请输入三角形的行数:");

int n = input.nextInt();

//i=1,j=0,j<1,j:[0] 1* i=2 ,j=0,j<3 ,j:[0,1,2] 3* i=3 ,j=0,j<5,j:[0,1,2,3,4] 5*

for(int i=1;i<=n;i++){

for(int j=0;j<2*i-1;j++){

System.out.print("*");

}

System.out.println();

}

}

}

课堂练习:输出一个等腰三角形,行数5

方式1

/**

 * 打印等腰三角形  

 *       *的个数                  行号         空格的个数(行号的反转再 +1

 *   #####*        1 2*0+1     0      5 = 4+1

 *   ####***       3 2*1+1     1      4 = 3+1

 *   ###*****      5 2*2+1     2      3 = 2+1

 *   ##*******     7 2*3+1     3      2 = 1+1

 *   #*********    9 2*4+1     4      1 = 0+1

 * @author Administrator

 *

 */

public class Test04 {

public static void main(String[] args) {

//控制的行数

for(int i=0;i<5;i++){

//先打印空格 ,再打印*  i=0,k=5 k>0 k:[5,4,3,2,1] 5#  i=1,k=4,k>0 k:[4,3,2,1] 4# i=2 ,k=3,k>0,k:[3,2,1] 3#

for(int k=5-i;k>0;k--){

System.out.print("#");

}

//打印*

for(int j=0;j<2*i+1;j++){

System.out.print("*");

}

System.out.println();

}

}

}

方式2

public class Test042 {

public static void main(String[] args) {

//控制的行数

for(int i=0;i<5;i++){

//先打印空格 ,再打印*  i=0,k=0,k<5,k:[0,1,2,3,4] 5# i=1,k=0,k<4,k:[0,1,2,3] 4# i=2,k=0,k<3,k:[0,1,2] 3#

for(int k=0;k<5-i;k++){

System.out.print("#");

}

//打印*

for(int j=0;j<2*i+1;j++){

System.out.print("*");

}

System.out.println();

}

}

}

课堂练习:输出一个菱形,行数从控制台输入

 

 

二重循环中出现breakcontinue ,有什么意义?

1.3. 为什么要用数组

变量如何保存0

int i = 0;

变量如何保存0,1,2,3,4,5

int i = “0,1,2,3,4,5”

如何获取第三个数字?

 

数组是什么:数组是一个变量,存储相同数据类型的一组数据。

1.4. 定义数组

方式一(推荐): 

方式(非主流

方式三定义时直接初始化)

注意:数组的大小在定义后无法改变。

 

1.5. 数组的赋值

如何修改数组的值

如何访问数组的值

什么是数组下标越界?

如何获得数组的长度

遍历数组显示数组中的数据

课堂练习:

1)数组中有12345五个数字,使用for循环遍历数组,输出平均值。

2)定义一个大小为7数组,数组中插入70~100的随机数,输出最大值平均分。

3)数组中保存了三个人名按照顺序输出当前三个人名。交换第一个和第三个人名,再次按顺序输出三个人名。

 

1.6. 数组排序

 

课堂练习:

定义一个大小为7数组,数组中插入70~100的随机数,按照升序和降序输出。

手动实现排序算法冒泡排序

1.7. 冒泡排序

1.8. 数组拷贝

需求:把一个数组中元素复制到另一个数组

课堂练习:

(1) a数组中一半的元素复制到b数组

(2) 把数组中前一半的元素正序复制到b数组把后一半的元素倒序复制到b数组

// 数组的复制

//后半段倒序复制到B数组

(3) 定义一个数组,向数组中插入500~100的随机数,其中的偶数复制到另一个数组并升序输出数组的内容。

1.9. 字符串转数组

课堂练习

用户在控制台输入5种水果5个水果存入数组,随机输出一个水果的名称如输入:苹果、梨子、香蕉、芒果、水蜜桃,返回“我最喜欢水蜜桃”。

1.10. 二维数组(了解

二维数组的两种声明方式

第一种

第二种

二重循环遍历二维数组

 

1.11. 作业

1)《03.选择结构、循环结构-2.doc》和《03.选择结构、循环结构-3.doc

2)定义一个数组,向数组中插入200~10的随机数去重并输出。

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值