一、 For循环
练习题:打印水仙花数
什么是水仙花数?
水仙花数指的是三位数,其各位数字上的立方和等于该本身。
举例:153就是一个水仙花数
153=111+555+33*3
代码:
package DayThree;
public class OPER {
public static void main(String[] args){
for(int i=100;i<=999;i++){
int x=i%10;
int y=i/10%10;
int z=i/100;
if(xxx+yyy+zzz==i)
System.out.println(i);
}
}
}
- while 语句
格式
基本格式
While(判断条件语句){
循环体语句;
}
扩展格式
初始化格式;
While(判断条件语句){
循环体语句;
控制条件语句;
}
练习:猜数游戏
代码:
package DayThree;
import java.util.Scanner;
/**while 循环
- 猜的数字:int num=456;
- 条件:int guess;
- (guess!=num){
- 猜数字
- guess<num;猜小了
- guess>num;猜大了
- guess==num;break;
- }
- @author Administrator
*/
public class WhileDemo {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入数x: ");
int x=sc.nextInt();
int num=666;
while(x!=num){
if(x<num){
System.out.println("猜小了!");
}
else if(x>num){
System.out.println("猜大了!");
}
System.out.println("继续!");
x=sc.nextInt();
if(x==num) {
System.out.println("正确!");break;
}
}
sc.close();
}
}
运行结果:
- do-while
格式:.
基本格式:
do{
循环体语句
}while(判断条件语句);
练习题 猜数游戏,随机产生一个数
代码实现:
package DayThree;
/*使用do-while进行猜数游戏
break和continue的区别
continue:使用循环结构,用于结束本次循环进行下一次循环
break:可以使用在switch循环中,用于跳出当前结构。
*/
import java.util.Scanner;
public class DoWhileDemo {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入数x: ");
int x=sc.nextInt();
int num=(int) (Math.random()*1000)+1;
do{
if(x<num){
System.out.println("猜小了!");
}
else if(x>num){
System.out.println("猜大了!");
}
System.out.println("继续!");
x=sc.nextInt();
}while(x!=num);
if(x==num) {
System.out.println("猜的正确!");
}
sc.close();
}
}
运行结果;
- 数组
(1) 定义:数组是存储多个变量的容器,多个变量的数据类型要一致。数组既可以存储基本数据类型,也可存储引用数据类型。
(2)数组的定义格式
格式一:数据类型[]数组名(建议使用)
格式二:数据类型数组名[]
注意:这两种定义做完了,数组中是没有元素值的
(3)数组的初始化
两种1.动态初始化:初始化时候只指定数组的长度,由系统为数组分配初始值
2.静态初始化:已经指定了每个元素的初始化值,由系统来就决定数组的长度。
(4)
Java中的内存分配
栈:存储的是局部变量
局部变量就是定义在方法中的变量
使用完毕后会被释放,立即回收。
堆:
存储的是new出来的对象:实体
每一个对象都是有地址值的
每一个对象数据都是具有默认值的。
byte ,short,long -----0
float,double,--------0.0
char-----------------’\u0000’
boolean--------------false
引用类型 ----------------null
使用完毕后,在空闲的时候会被回收
(5)方法区:
本地方法区:和系统有关系
寄存器:(给CPU使用的)
数组练习:
由身份证前17位计算出身份证的最后一位
代码实现:
package DayThree;
import java.util.Scanner;
/**数组的应用
- 身份证案例
- @author Administrator
*/
public class Identify {
public static void main(String[] args){
//身份证前17位数字—用户输入
int card[]=new int[17];
//前17位对应的系数
int data[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
//身份证的最后一位系数
char[] code={‘1’,‘0’,‘x’,‘9’,‘8’,‘7’,‘6’,‘5’,‘4’,‘3’,‘2’};
Scanner sc=new Scanner(System.in);
int sum=0;
System.out.println("请输入身份证号: ");
for(int i=0;i<card.length;i++){
card [i]=sc.nextInt();
}
for(int i=0;i<card.length;i++){
sum+=card[i] *data[i];
}
System.out.println("最后一位"+code[sum%11]);
sc.close();
}
}
运行结果
数组的访问:
通过(数组名.length)来获取数组的长度
通过下标索引访问数组中的元素
数组的遍历
数组的复制
数组的排序(冒泡排序)
练习:冒泡排序代码实现(优化)
package DayThree;
/**
- 冒泡排序
- 1.声明一个数组
- @author Administrator
*/
public class Maopaopaixu {
public static void main(String[] args){
int[] arr={15,3,4,6,2,90,123,1};//静态初始化
bubbleStored(arr);
}
public static void bubbleStored(int[] arr){
boolean isSorted;
for(int i=0;i<arr.length;i++){//轮数
isSorted=true;//假设剩下的元素以及排序好了
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){//每次都和下一个元素进行比较
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
isSorted=false;//y一旦需要交换数组说明剩下的元素没有排好序
}
}
System.out.println("排序的趟数为:"+i);
if(isSorted){
break;//没有进行交换,说明剩下的元素已经排序好了
}
}
System.out.println("排序后的数为");
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
运行结果:
4.异常
1.数组越界异常(下标越界)
访问了数组中不存在的索引
java.lang.ArrayIndexOutOfBoundsException
2.空指针异常
java.lang.NullPointerException
数组的引用没有指向对象,但是却在操作对象中的元素
代码处理;
package DayThree;
/*
-
1.数组越界异常(下标越界)
-
访问了数组中不存在的索引
-
java.lang.ArrayIndexOutOfBoundsException
-
2.空指针异常
-
java.lang.NullPointerException
-
数组的引用没有指向对象,但是却在操作对象中的元素
-
捕获异常
*/
代码实现:
public class Yuejieyichang {
public static void main(String[] args){
int arr[] = {1,3,5};
//System.out.println(arr[3]);
//java.lang.NullPointerException
//try catch快捷键 alt+/try { System.out.println(arr[3]); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("数组发生越界异常"); }catch (Exception e) { // TODO: handle exception } try{ arr = null; System.out.println(arr[1]); System.out.println(arr[3]); }catch(NullPointerException e){ System.out.println("发生了空指针异常"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("数组发生越界异常"); }catch(Exception e){ e.printStackTrace(); }finally{ System.out.println("233"); } }
}