day05文字笔记
知识回顾:
1.Scanner接收用户数据:三步
import java.Util.Scanner;
Scanner scan = new Scanner(System.in);
int num =scan.nextInt();
double score = scan.nextInt();
2.分支结构
if…else
switch....case
3.循环结构:
4.循环三要素:
循环变量的初始化
循环条件
循环变量的改变(向着循环结束变)
5.循环结构
while:先判断后执行,可能一次都不执行
do…While:先执行后判断,至少执行一次
正课内容:
1、循环结构----for循环结构:应用率比较高,与次数有关,例如猜数字这个案例就不行,因为不知道要猜多少次
for循环结构:
1)语法
for(要素1;要素2;要素3){
语句块4
}
2)执行过程
1243243243243。。。
***变量的重名问题:
当作用域重叠时,变量是不可以重名的;当作用域不重叠时,变量是可以重名的
注意:for循环中的循环变量num,作用域的范围仅仅限于当前的for循环中
//案例2:输出1*9到9*9乘法表
for(int num = 1;num<=9;num++){
System.out.println(num+"*9="+num*9);
}
System.out.println("继续执行。。。");
//案例3:输出9*1到1*9乘法表
for(int num = 9;num>=1; num--){
System.out.println(num+"*9="+num*9);
}
System.out.println("继续执行。。。");
//案例4:输出1*9,3*9,5*9,7*9,9*9乘法表
for(int num = 1;num<=9;num+=2){
System.out.println(num+"*9="+num*9);
}
System.out.println("继续执行。。。");
***for特殊语法结构
for( ; ; ){
System.out.println("我要学习。。");//这是个死循环。没有开头没有结尾
}
2、三种循环结构如何选择:
1)先看循环是否与次数相关
2)若相关:直接使用for
若无关:
3)再判断要素1与要素3是否相同:相同则直接使用do…while;不同则直接使用while
3、break:循环中看到break循环结束
public static void main(String[] args) {
for(int num = 1;num<=9;num++){
if(num==5){//在某种特殊情况下提前结束循环
break;//循环结构中见到,break就中止循环
}
System.out.println(num+"9="+num9);
/break语法执行过程
num = 1 19=9
num = 2 29=18
num = 3 39=27
num = 4 4*9=36
num = 5 break
*/
}
continue:跳过循环体中的剩余语句而直接进入下一次循环
4、嵌套循环:—循环结构中再嵌套循环
循环中嵌套循环,一般多行多列时使用嵌套!—外层控制行,里层控制列
执行规则:外层走一次,内层循环所有次
建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
break只能跳出当前一层的循环
**转义符:
\t:水平制表位,固定占8个位
\t\t:
5、数组:
1)相同数据类型元素的集合
2)是一种数据类型(引用数据类型)
3)定义:
int[ ] a;//声明一个整型数组变量a double[ ] b; char[ ] c; boolean[ ] d;
注意:int与int[ ]是两个完全不同的数据类型
int[] a = new int[5];//声明一个整型数组a,包含5个元素,每个元素都是int类型,默认值为0
double[] d =new double[10];//声明一个浮点型数组d,包含10个元素,每个元素都是double,默认值都是为0.0
boolean[] b = new boolean[26];//声明一个布尔型数组b,包含26个元素,每个元素都是boolean,默认值是false
4)初始化:初始化数组中的元素
int[ ] a = new int[3];//0,0,0
int[ ] arr = {2,5,8};//2,5,8---静态赋值
int[ ] arr3;
arr3 = {2,5,8};//编译错误---只能声明并同时初始化
int[ ] arr4 = new int[]{2,5,8};//正确
5)访问:访问数组中的数据
5.1)通过数组名.length可以获取数组的长度(元素的个数)
5.2)通过下标或者索引来访问数组中的元素
下标从0开始,最大到(数组的长度-1)
int[ ] arr = new int[3];//0,0,0
arr[0]------代表arr中的第一个元素(int)
arr[1]------代表arr中的第二个元素(int)
6)遍历/迭代:从头到尾挨个走一遍
案例1:声明一个含有10个元素的数组,并给每个元素赋值100,并且遍历数组
int[] arr = new int[10];
for(int i = 1;i<arr.length;i++){//遍历所有元素
arr[i] = 100;//给每个元素赋值100
System.out.println(arr[i]);
案例2:
int[ ] arr = new int[10];//声明一个数组,每个数组包含10个元素,每个元素都是int类型
for(int i = 0;i<arr.length;i++){//遍历数组
arr[i] = (int)(Math.random()*100);//数组中的每个元素都是从0~99的随机数
System.out.println(arr[i]);
**案例分析1:系统自动出10到题目,每道题是两个0~99的数字进行相加,用户每答对1题得10分,最后要求统计用户的最终得分
Scanner scan = new Scanner(System.in);
int score = 0;
for (int i = 1; i <= 10; i++) {
int a = (int)(Math.random()*100);//1)出题
int b = (int)(Math.random()*100);
int result = a + b;//存正确计算结果
System.out.println("("+i+")"+a+"+"+b+"=?");
// 2)答题
System.out.println("算吧");
int answer = scan.nextInt();
//3)判题
if(answer==-1){
System.out.println("游戏结束!");//输入-1提前结束
break;
}
if(answer==result){
score+=10;//答对加10分
}else {
System.out.println("答错了,继续答题");//答错不得分,继续答题
}
}
System.out.println("总分为:" + score);