循环综合练习
无限循环
for(;;)
{
语句;
}
while(true)
{
语句;
}
do
{
语句;
} while(true)
跳转语句:continue跳过本次循环继续执行下次循环;break结束整个循环。
案例1
public static void main(String[] args){
for(int i = 0;i<=100; i++){
//判断个位十位以及7的倍数 个位i%10 十位i/10%10
if(i % 7 == 0 || i%10 ==7 || i/10%10==7)
{
System.out.println("过");
continue;
}
System.out.println(i);
}
}
案例2
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数数字:");
int x = sc.nextInt();
for(int i = 0;i<=x;i++)
{
//break 一旦找到立即退出
if(i*i == x){ System.out.println(i);break; }
else if(i*i>x){ System.out.println(i-1);break; }
}
}
案例3 判断是否是质数
错误写法示例
public static void main(String[] args)
{
//判断是否是质数
//错误写法 例子输入9 当2时直接输出了不是质数,但是3*3=9
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for(int i =2;i<num;i++)
{
if(num%i==0){System.out.println("输入的数不是质数");break;}
else
{System.out.println("输入的数是质数");break;}
}
}
正确写法
public static void main(String[] args)
{
//设置一个标识标记是否是质数 如果循环下来标记一直不变则是质数
bool flag = true;
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for(int i =2;i<num;i++)
{
if(num%i==0){flag = false;break;}
}
if(flag){System.out.println("是质数");}
else{System.out.println("不是质数");}
}
//上述代码还可以简化 如果数字很大 那么会循环很多次
//简化思路:根据观察可得若a*b=number,那么a==b==number的平方根或者(a>number的平方根 b<number的平方根 )或者(a<number的平方根 b>number的平方根)
//所以可以只循环到number的平方根
案例4 猜数字
获取随机数
//导包
import java.util.Random
//创建对象
Random r = new Random();
//生成随机数
int number = r.nextInt(100);//0-99
public static void main(String[] arg)
{
//导包
import java.util.Random
//创建对象
Random r = new Random();
//生成随机数
int number = r.nextInt(100)+1;//生成1-100之间的一个随机数
Scanner sc = new Scanner(System.in);
System.out.println("请输入你猜的随机数");
int guess = sc.nextIn();
while(true)
{
if(guess >number){System.out.println("你猜的数字大了");}
else if(guess <number){System.out.println("你猜的数字小了");}
else{System.out.println("猜中了");break;}
}
}
数组
数组的定义:
//格式一 数据类型[] 数组名
int[] array
//格式二 数据类型 数组名[]
int array[]
数组的静态初始化:
//完整格式范例
int[] arr1 = new int[]{11,22,33}
//简化格式
int[] arr2 = {11,22,33}
数组的动态初始化:
范例int[] arr = new int[3];
数组案例 交换数据
public static void main(String args)
{
int[] array = {1,2,3,4,5};
for(int i=0,j=array.length-1;i<j;i++,j--)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
for(int i=0;i<array.length;i++)
{
System.out.print(array[i]+"");
}
}
方法
定义:
方法是程序中最小的执行单元,重复、具有独立功能的代码可以抽取到方法中,方法可以提高代码的复用性和可维护性。
方法的重载:
同一个类中,方法名相同,参数不同的方法。与返回值无关。
参数不同指的是个数不同或者类型不同或者顺序不同,其中不建议使用顺序不同的方法重载。
案例 判断数字是否已经存在在数组中:
public static void main(String[] args)
{
int[] arr={12,32,45,67,87,54};
boolean flag == contains(arr,89);
System.out.println(flag);
}
public static boolean contains(int[] arr,int num)
{
for(int i = 1;i<arr.length;i++)
{
if(arr[i] == num)
return true;//为什么不能用break呢,弄清楚return和break的区别
}
//关键弄清楚什么时候才能断定数组中是否存在该数字
//当数组全部遍历比较完之后才能断定
return false;
}
//return与循环没什么关系,与方法有关,表示1结束方法2返回结果,
//return之后整个方法结束,里面的循环也随之结束;
//break与方法没什么关系,结束循环或者switch的
数据类型
基本数据类型:数据值存储在自己的空间中,如果赋值给其他变量,赋的是真实的值。
引用数据类型:数据值存储在其他空间中,自己空间中存储的是地址值,赋值给其他变量的话赋的就是地址值。