JAVA基础day04循环+数组入门

编程入门 行业动态 更新时间:2024-10-08 20:31:18

JAVA基础day04循环+<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组入门"/>

JAVA基础day04循环+数组入门

 Java基础:Day04 

今日目标:

  1. 循环之break、continue
  2. 程序调试
  3. 多重循环
  4. 数组入门

1.breakcontine

1.1break使用场景

①switch中:匹配到某个case时,跳出整个switch结构

②循环【1层】:跳出当前循环体,执行整个循环结构后面的语句

1.2continue

只能用于循环中,结束当次循环,即不执行当次循环,continue后面的语句,继续下一次循环

循环小结:

 

2.程序调试

要习惯使用调试功能

2.1为什么要使用

跟踪代码的走向,同时你们后面在学习框架的源码时,通常也会使用程序调试去跟踪。

2.2如何用

2.2.1设置断点

2.2.2使用断点运行

2.2.3跟踪代码,观察变量的变化

3.多重循环

玩多重循环,就是玩规律

3.1为什么要用

需求:打印5行4列的*,怎么打印

发现使用单重循环也可以搞定,但是需要执行多次重复操作

前面说过:重复操作考虑使用循环,所以,此处我们应该使用双重循环

3.2有哪些组合

6种组合

练习:

1.打印n>=2行的等腰三角形*
*
***
public class f01 {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {//控制行数for (int k = 1; k <= 5-i; k++) {//控制空格的个数System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {//控制打印的图形System.out.print("*");}System.out.println();//控制换行}}
}2.打印直角三角形
*
**
***
public class f01 {public static void main(String[] args) {for(int i=0;i<5;i++){for(int j=0;j<i+1;j++){System.out.print("*");}System.out.println();}}
}3.倒序打印九九乘法表
public static void main(String[] args) {for (int i = 9; i>0 ; i--) {for (int j = 1; j<=i ; j++) {int t=i*j;System.out.print(i+"*"+j+"="+t+"\t");}System.out.println();}}4.输入n,就打印n行,且改行的长度为n个n
1
2 2
3 3 3public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入你要打印的行数");int n=input.nextInt();
​for (int i =1 ; i <= n; i++) {for (int j = 1; j <= i; j++) {
​System.out.print(i);}System.out.println();}}

  4.数组

4.1为什么

4.2是什么

 

  1. 数组是内存中的一块连续存储空间
  2. 存放的是多个相同数据类型的值 ?几种数据类型【2种:基本+引用】
  3. 长度一旦定义,不能改变 》 想改变长度,怎么办?重新搞一个
  4. 使用下标/角标/索引,去操作数组中的元素
  5. 下标从 0 ,最大值为
  6. 数组元素有默认值
  7. 获取数组长度: 数组名.length

4.3怎么玩

4.3.1步骤

  1. 在内存中声明一个数组: int[] scores数组名;
  2. 为数组分配长度; scores=new int[3];
  3. 为数组元素赋值: scores[0] = 20;

4.3.2基本使用

1.初始化数组的两种方式

动态初始化: int[] scores2 = new int[3] ,适合事先不知道里面元素的值

静态初始化: int[] aa = {12,33}

2.遍历

3.最值

比武招亲:打擂台,每个上台的都认为自己最牛逼

4.标记思想

非常非常重要,参见远古时代,对犯人的做法!!!!!

附录

数组最常遇到的问题/异常:

作业

  1. 打印镂空的菱形,补全菱形的外边,就长方形中嵌套菱形,上半个菱形的行数从键盘输入
import java.util.Scanner;
public class HomeWork4 {public static void main(String[] args) {   Scanner input =new Scanner(System.in);System.out.println("请输入上半区菱形的行数");int n=input.nextInt();for (int i = n; i >= 1; i--) {   //菱形的上半部分for (int j = 1; j <= 2*n-1; j++) {if (i == j || j == 2*n - i) {System.out.print("*");} else if((i==n&&j<=2*n-1)||((j==1||j==2*n-1)&&i<=n)) {System.out.print("#");}else{System.out.print(" ");}}System.out.println();}for (int i = 2; i <= n; i++) {    //菱形的下半部分for (int j = 1; j <= 2*n-1; j++) {if ((i == j || j == 2*n - i) ){System.out.print("*");} else if((i==n&&j<=2*n-1)||((j==1||j==2*n-1)&&i>=2)){System.out.print("#");}else{System.out.print(" ");}}System.out.println();}
}
}

2.实现10道 1-100 以内加减乘除求余数算术题,每题10分,操作符从 char[] chs = {'+','- ','*','/','%'} ,根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算总分数,以及答题耗时。根据分数和答题耗时,给出对应的考试等级

注意:1.限时5s,这个值自己定义;若在限时范围内,成绩在[90,100]给优秀;[80,90)给良好;

[60,80)给及格;不及格

       2.若超过考试限时(0,2s],分数扣10分,扣完的分数若在上述值范围内,依然给出对应的成绩等  级;

      3.若超过考试限时(2,3s],分数扣20分,扣完的分数若在上述值范围内,依然给出对应的成绩等  级;

      4.若超过考试限时[5s,正无穷),分数扣50分,提示:“给你一辈子,估计都难能考及格”;

import java.util.Scanner;
public class HomeWork4 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("==================答题开始=====================");int correctTimes = 0;char [] chs ={'+','-','*','/','%'};int score = 0;int answerTime = 0;int count = 0;double start= 0.0;double end  =0.0;for (int i = 1; i < 11; i++) {// 生成2个随机数int num1 = (int)(Math.random()*101);int num2 = (int)(Math.random()*101);int num3 = (int)(Math.random()*5);System.out.println("每道题有效时间5s,答对一题加10分,答错不扣分");System.out.println(num1+""+chs[num3]+""+num2+"=?");start = System.currentTimeMillis();//开始时间int ans = 0;switch (chs[num3]){case '+':ans = num1+num2;break;case '-':ans = num1-num2;break;case '*':ans = num1*num2;break;case '/':ans = num1/num2;break;case '%':ans = num1%num2;break;}int result = input.nextInt();end = System.currentTimeMillis();//结束时间answerTime += (int)(end-start)/1000;if(result == ans ){count++;System.out.println("您一共回答正确了"+count+"题"+"总计用时"+answerTime+"秒");score+=10;}else{System.out.println("回答错误");}}if(answerTime-50>2){score -=10;}else if (answerTime-50>3){score -=20;}else if((answerTime-50)>5){System.out.println("给你一辈子都难及格");score -=50;}switch (score/10) {case 10:case 9:System.out.println("成绩优异");break;case 8:System.out.println("成绩良好");break;case 7:case 6:System.out.println("及格");break;default:System.out.println("不及格");break;}}
}

 

3.买双色球,规则(1-33红中选6不重复数字;1-16篮中选1) 大体流程:

  • 号码是在范围之内:红[1,33],篮[1,16] —》预先存在数组中
  • 投注,买家选择号码6红[放入到数组中]+1篮 int 》随机

1-33红色球中,如何随机取6个且不重复。计数器,随机出来一个,将这个值置为0【表示已  经取过了】

  • 摇奖过程:6+1 红球数组+1篮球int --》手动输入
  • 遍历红球数组,统计中奖的红球个数;篮球要么1个,要么0个
  • 根据红蓝个数,去看中几等奖

 

import java.util.Scanner;
public class caipiao {public static void main(String[] args) {//生成双色球//定义大小为7的数组存放6+1个双色球上的数字int nums[] = new int[7];//取6次随机数int []  inputNumber = new int[7];Scanner input = new Scanner(System.in);//创建33个红球int redBall[] = new int[33];for (int i = 0; i < redBall.length; i++) {redBall[i] = i+1;}for(int i=0;i<6;i++) {//  int redBall[] = new int[(int)(Math.random()*33+1)];if(redBall[(int)(Math.random()*33+1)] !=0 ){nums[i] = redBall[(int)(Math.random()*33)+1];redBall[(int)(Math.random()*33)+1] = 0;}else{i--;}}//生成蓝色球数字nums[nums.length-1]=(int)(Math.random()*16+1);int n;System.out.println("请选择6个红球,范围在1-33之内,不得重复");for (int i = 0; i < 7; i++) {if( i<6){n = input.nextInt();inputNumber[i] = n;}else{System.out.println("请选择1个蓝球,范围在1-16之内");n  = input.nextInt();inputNumber[i] = n;}}System.out.println("开奖的红球号码为");for (int i = 0; i < 7; i++) {if( i<6){System.out.print(nums[i]+" ");}else{System.out.println();System.out.println("开奖的蓝球号码为");System.out.print(nums[i]+" ");System.out.println();}}System.out.println("您选择的红球号码为");for (int i = 0; i < 7; i++) {if( i<6){System.out.print(inputNumber[i]+" ");}else{System.out.println();System.out.println("您选择的蓝球号码为");System.out.print(inputNumber[i]+" ");System.out.println();}}int redcount =0;int bluecount =0;for (int i = 0; i < 6; i++) {for (int j =0;j<6;j++){if(inputNumber[i] == nums[j]){redcount++;}}}if(inputNumber[6] == nums[6]) {bluecount++;}if(bluecount == 1){switch (redcount){case 6:System.out.println("恭喜你中了一等奖!");break;case 5:System.out.println("恭喜你中了三等奖!");break;case 4:System.out.println("恭喜你中了四等奖!");break;case 3:System.out.println("恭喜你中了五等奖!");break;case 2:case 1:case 0:System.out.println("恭喜你中了六等奖!");break;}}else {switch (redcount) {case 6:System.out.println("恭喜你中了二等奖!");break;case 5:System.out.println("恭喜你中了四等奖!");break;case 4:System.out.println("恭喜你中了五等奖!");break;case 3:case 2:case 1:case 0:System.out.println("谢谢参与");break;}}}}

 

更多推荐

JAVA基础day04循环+数组入门

本文发布于:2024-02-13 09:18:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757614.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   入门   基础   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!