循环结构–while/do-while
while :循环,先判断,后执行
while(条件){满足条件执行的循环体 }
do-while 循环,先执行一次,再判断,如果符合条件,开始第二轮循环,不符合,结束
do{ 循环体 }while(条件);
设置死循环要设置出口
package cn.tedu.review;
import java.util.Random;
import java.util.Scanner;
/*while or do{}while{}
* 生成一个随机数[0,100)以内的整数,和用户一直输入的数字作比较,直到用户猜对了
*/
public class TestWhile_dowhlie {
public static void main(String[] args) {
int r = createNum();
//System.out.println(r);
//guessNumber1(r);//使用while循环猜数字
guessNumber2(r);
}
private static void guessNumber2(int r) {
// TODO Auto-generated method stub
}
private static void guessNumber1(int r) {
// 使用while循环猜数字
while(true){/*死循环需要设置出口*/
System.out.println("猜猜看~");
int input = new Scanner(System.in).nextInt();
if(r<input){
System.out.println("哥们儿,猜大了");
}else if(r>input){
System.out.println("哥们儿,猜小了");
}else if(r==input){
System.out.println("牛批了!你终于对了");
break;
}
}
}
private static int createNum() {
// 产生随机数的方法
//参数100是自定义的,此时随机数的范围是[0,100)以内的整数
int random = new Random().nextInt(100);
return random;
}
}
数组
数组Array,标志是[ ],用于存储多个相同类型数据的集合
数组名需要开辟连续的内存空间,数组定义时,需要明确数组类型和长度
数组名保存的是数组的地址值,是一个引用类型变量!!!
创建数组格式:
1.静态初始化
int [ ] a = new int [ ]{1,2,3,4,5};
int [ ] b = {1,2,3,4,5};
2.动态初始化
int [ ] c = new int[5];
创建过程分析:
程序创建数组 int[] a = new int[5]; 时发生了什么?
在内存中开辟连续的空间,用来存放数据,长度是5
给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
数组完成初始化会分配一个唯一的地址值
把唯一的地址值交给引用类型的变量a去保存
//数组的创建
/*char类型底层做了处理,可以直接打印数组中具体的元素内容
* 除了char类型以外的其他类型的数组,想要查看具体的元素
* 需要使用数组的工具类Array.toString(数组名)方法
* 注意:Arrays使用时需要导包 :java.util.Arrays;
*/
package cn.tedu.array;
import java.util.Arrays;
//数组的创建
public class TestCreatearray {
public static void main(String[] args) {
char[] a = {'h','e','l','l','o'};
char[] b = new char[]{'h','e','l','l','o'};
//1.2
char [] c = new char[5];
/*我们通过数组下标来操作数组的元素
* 数组下标从0开始,最大下标是数组长度-1
*/
System.out.println(a);
System.out.println(b);
c[0] = 'h';
c[1] = 'e';
c[2] = 'l';
c[3] = 'l';
c[4] = 'o';
System.out.println(c);
/*char类型底层做了处理,可以直接打印数组中具体的元素内容
* 除了char类型以外的其他类型的数组,想要查看具体的元素
* 需要使用数组的工具类Array的toString(数组名)方法
* 注意:Arrays使用时需要导包 :java.util.Arrays;
*/
//
String[] s = {"a","b","c"};
System.out.println(s);//[Ljava.lang.String;@15db9742
//打印的是地址
System.out.println(Arrays.toString(s));
//Arrays.toString()
//查看数组的长度--数组中存放元素的个数
//a.length
System.out.println(a.length);
System.out.println(s.length);
}
}
数组遍历
遍历:从头到尾,依次访问数组每一个位置,获取每一个位置的元素.
package cn.tedu.array;
//输出一年中每个月的天数
public class TestArrayExec {
public static void main(String[] args) {
/*
* 1 3 5 7 8 10 腊,31天永不差
*/
int[] a = {31,28,31,30,31,30,31,31,30,31,30,31};
/*输出每个月的天数
* 遍历数组,Array.toString(数组名)
* 从哪里开始 :0
* 到哪结束:a.length-1
* 如何变化:++
*/
for (int i=0;i<=a.length;i++){
System.out.println(i+1+"月有"+a[i]+"天");
}
}
}
数组的动态赋值
- 可通过循环遍历数组,依次给数组的每个位置上的元素(有规律)赋值
package cn.tedu.array;
//数组的动态赋值
import java.util.Arrays;
/*数组的动态赋值
* 可通过循环遍历数组,依次给数组的每个位置上的元素(有规律)赋值
* 存1-10
*/
public class TestArray2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = new int[10];//
//
for(int i=0;i<=a.length-1;i++){
//System.out.println(i);
//System.out.println(a[i]);
a[i] = i+1;
}
System.out.println(a);//打印的是一个地址值
System.out.println(Arrays.toString(a));
}
}
测试数组的工具类Arrays
Arrays.toString(数组名);
package cn.tedu.array;
//Array.toString(数组名)
import java.util.Arrays;
//测试数组的工具类Arrays
public class TestArrays3 {
public static void main(String[] args) {
//
int[] a = {12,78,34,13};
Arrays.sort(a);
//把数组a进行排序
System.out.println(Arrays.toString(a));
}
}
Arrays.sort(a);自动排序—从小到大
package cn.tedu.array;
//Arrays.sort(a);排序
import java.util.Arrays;
//测试数组的工具类Arrays
public class TestArrays3 {
public static void main(String[] args) {
//
int[] a = {12,78,34,13};
Arrays.sort(a);
//把数组a进行排序
System.out.println(Arrays.toString(a));
}
}
Arrays.copyof(数组名,新的长度)
*把数组赋值成一个指定长度的新数组
*新数组的长度 大于 原数组, 相当于复制,并增加位置
*新数组的长度 小于 原数组, 相当于截取一部分数据
package cn.tedu.array;
import java.util.Arrays;
//Arrays.copyof(数组名,新的长度)
/*把数组赋值成一个指定长度的新数组
*新数组的长度 大于 原数组, 相当于复制,并增加位置
*新数组的长度 小于 原数组, 相当于截取一部分数据
*/
public class TestArraycopyof {
public static void main(String[] args) {
String[] s = {"r","e","A","d","y"};
String[] a = Arrays.copyOf(s,7);
System.out.println(Arrays.toString(a));
String[] b = Arrays.copyOf(s,3);
System.out.println(Arrays.toString(b));
Arrays.sort(s);
System.out.println(Arrays.toString(s));
//Arrays.sort(a);
//System.out.println(Arrays.toString(a));
//空字符不能排序
Arrays.sort(b);
System.out.println(Arrays.toString(b));
}
}
Arrays.copyOfRange(to, 2, 4); //中间截取,这个方法指定的是数组的下标,左闭右开,[2,4)
package cn.tedu.review;
import java.util.Arrays;
public class TestArray {
public static void main(String[] args) {
int[] from = {1,2,3,4,5};
//扩容
int[] to = Arrays.copyOf(from,10);
System.out.println(Arrays.toString(to));
//缩容
//截取的个数,Arrays.copyOfRange(to,2,4);
// 这个方法指定的是数组的下标,左闭右开,[2,4)
int[] to3 = Arrays.copyOfRange(to,2,4);
System.out.println(Arrays.toString(to3));
System.out.println(Arrays.toString(to3));
}
}
二维数组
//Arrays.tostring 打印不了二维数组,
//可用for对二维数组进行遍历
package cn.tedu.array;
import java.util.Arrays;
//二维数组
//Arrays.tostring 打印不了二维数组,
//可用for对二维数组进行遍历
public class Array2 {
public static void main(String[] args) {
int[][] a = {{3,5},{5,6,8},{7,8,9}};
System.out.println(Arrays.toString(a));
//Arrays.tostring 打印不了二维数组,
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.println(a[i][j]);
}
}
}
}