Java复习第二天
Day04
1、switch语句的格式?针对格式的解释?以及注意事项?
(1)格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
(2)格式解释说明:
switch:说明这是switch语句。
表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else。
(3)注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:case就可以把值固定。A,B,C,D
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
------------------------------------------------------------------
2、看程序,分析下面程序的结果:
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
System.out.println("y="+y);
输出:y=5
------------------------------------------------------------------
3、根据输入的值,判断是星期几。(分别用if语句和switch语句实现)
输入:1 输出:星期1
Switch 语句:
public class Test02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入数值:");
int week=scanner.nextInt();
switch(week)
{
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("数值错误!");
}
}
}
If语句:
public class Test03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入数值:");
int week=scanner.nextInt();
if(week==1){
System.out.println("星期一");
}else if(week==2){
System.out.println("星期二");
}else if(week==3){
System.out.println("星期三");
}else if(week==4){
System.out.println("星期四");
}else if(week==5){
System.out.println("星期五");
}else if(week==6){
System.out.println("星期六");
}else if(week==7){
System.out.println("星期天");
}else
System.out.println("数值错误!");
}
}
------------------------------------------------------------------
4、for循环的格式? 用for循环完成案例。
(1)for循环的格式
A: for循环语句
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
(2)注意事项
a:判断条件语句无论简单还是复杂,结果是boolean类型
b:循环体语句如果是一条,可以省略大括号,但是不建议
c:有分号就没有左大括号,有左大括号就没有分号
求和
//求1-100之和。
int sum = 0;
for(int x=1; x<=100; x++) {
sum +=x;
}
System.out.println("1-100之和是:"+sum);
求偶数和
//求出1-100之间偶数和
int sum2 = 0;
for(int x=1; x<=100; x++) {
if(x%2 == 0) {
sum2 += x;
}
}
System.out.println("1-100偶数之和是:"+sum2);
求奇数和
//求出1-100之间奇数和
int sum3 = 0;
for(int x=1; x<=100; x++) {
if(x%2 != 0) {
sum3 += x;
}
}
System.out.println("1-100奇数之和是:"+sum3);
打印水仙花数
public class Test06 {
public static void main(String[] args) {
//三位数告诉了我们范围,用for循环就可以搞定
for(int x=100; x<1000; x++) {
//获取每一个三位数的个,十,百的数据
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;
//按照要求进行判断
if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
//如果满足要求就计数。
System.out.println(x);
}
}
}
}
统计水仙花数
public class Test05 {
public static void main(String[] args) {
//定义统计变量,初始化值是0
int count = 0;
//三位数告诉了我们范围,用for循环就可以搞定
for(int x=100; x<1000; x++) {
//获取每一个三位数的个,十,百的数据
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;
//按照要求进行判断
if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
//如果满足要求就计数。
count++;
}
}
System.out.println("水仙花数共有"+count+"个");
}
}
九九乘法表
public class Test07 {
public static void main(String[] args){
for (int i=1;i<=9;i++) {
for (int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.print("\n");
}
}
}
------------------------------------------------------------------
5、while循环的格式?要能看懂执行流程
(1) while循环的格式
A:while循环
while(判断条件语句) {
循环体语句;
}
B:do...while循环
do {
循环体语句;
}while(判断条件语句);
(2)循环使用的注意事项(死循环)
A:一定要注意修改控制条件,否则容易出现死循环。
B:最简单的死循环格式
a:while(true){...}
b:for(;;){}
用while循环完成如下案例
求和
public class Test08 {
public static void main(String[] args){
int sum2 = 0;
int y=1;
while(y<=100) {
sum2+=y;
y++;
}
System.out.println("sum2:"+sum2);
}
}
纸张折叠成珠穆朗玛峰高度的次数
public class Test09 {
public static void main(String[] args) {
int count = 0;
//最高山峰是珠穆朗玛峰:8848m这是最终的厚度
//我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度
int end = 884800;
int start = 1;
while(start<end) {
//只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++
count++;
//折叠一次有什么变化呢?就是厚度是以前的2倍。
start *= 2;
System.out.println("第"+count+"次厚度是"+start);
}
//输出统计变量。
System.out.println("要叠"+count+"次");
}
}
------------------------------------------------------------------
6、break,continue和return分别有什么用?
(1)break:中断的意思
A:用在循环和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合
(2)continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用
a:跳出单层循环的一次,可以继续下一次
(3)return:返回
A:用于结束方法的,后面还会在继续讲解和使用。
B:一旦遇到return,程序就不会在继续往后执行。
------------------------------------------------------------------
Day05
1、函数的概念?函数的格式?格式的解释说明
(1)概念:完成特定功能的代码块。
(2)格式:
修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2...) {
方法体语句;
return 返回值;
}
(3)格式解释说明:
修饰符:目前就用 public static。后面再详细讲解其他修饰符
返回值类型:就是功能结果的数据类型
方法名:就是起了一个名字,方便我们调用该方法。
参数类型:就是参数的数据类型
参数名:就是变量
参数分类:
实参:实际参与运算的数据
形参:方法上定义的,用于接收实际参数的变量
方法体语句:就是完成功能的代码块
return:结束方法
返回值:就是功能的结果,由return带给调用者。
------------------------------------------------------------------
2、函数的调用
A:明确返回值类型的函数调用
B:void类型的函数调用
------------------------------------------------------------------
3、什么是函数重载?
在同一个类中,方法名相同,参数列表不同的函数,与返回值无关。
------------------------------------------------------------------
4、数组的概念?有什么特点?
(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。
编号的专业叫法:索引
------------------------------------------------------------------
5、一维数组的定义格式?
A:数据类型[] 数组名;
B:数据类型 数组名[];
------------------------------------------------------------------
6、数组操作的两个小问题
A:动态初始化
只给长度,系统给出默认值
举例:int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
------------------------------------------------------------------
7、数组常见操作:
数组遍历(依次输出数组中的每一个元素)
//方式1:
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
//方式2:
public static void printArray2(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.println(arr[x]+", ");
}
}
}
数组获取最值(获取数组中的最大值最小值)
//最大值:
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
//最小值:
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
数组元素逆序 (就是把元素对调)
//方式1:
public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}
//方式2:
public static void reverse2(int[] arr) {
for(int start=0,end=arr.length-1; start<=end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
数组元素查找(查找指定元素第一次在数组中出现的索引)
//方式1:
public static int getIndex(int[] arr,int value) {
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}
return -1;
}
//方式2:
public static int getIndex2(int[] arr,int value) {
int index = -1;
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}
return index;
}