键盘输入
- 导包:
import java.util.Scanner;
- 创建输入对象:
Scanner scanner = new Scanner(System.in);
- 将输入的数据存入变量中 :
int value = scanner.nextInt;
数组
- 数组的相关概念
数组名
数组元素
角标(下标,索引)
数组的长度(元素的个数)
- 数组的特点
数组是有序排列的
数组的长度一旦确定,不能修改
数组是引用类型,数组的元素可以是别的类型
- 数组的分类
按维度 :一维数组,二维数组。。。。
按数组元素的类型 :基本数据类型,引用数据类型
4.一位数组的使用
1:一位数组的声明和使用
2:如何调用数组指定位置的元素
3:如何获取数组的长度
4:如何遍历数组
5:数组元素的默认初始化值
int num;//声明
num = 10; //初始化
int id = 1001;//声明+初始化
int[] ids;//声明
//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
ids = new int[]{1001,1002,1003,1004};
//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];
//错误的写法
//int[] arr1 = new int[];
//int[5] arr2 = new int[3]{1,2,3};
//int[] arr3 = new int[3]{1,2,3};
//正确的写法 前面中括号空着,后面要么用大括号写元素,要么中括号写元素的个数
//总结:数组一旦初始化完成,长度就确定了
//也是正确的写法
int[] number = {1001,1002,1003,1004};//类型推断
//2:如何调用数组指定位置的元素
//用角标,从0开始,到数组长度-1结束。
names[0] = "王阳明";
names[1] = "林动";
names[2] = "月下小剑仙";
names[3] = "李淳罡";
names[4] = "周周";
//3:如何获取数组的长度
//属性:length
System.out.println(names.length);//5
System.out.println(ids.length);//4
//4:遍历数组元素---循环
//{
for(int i = 0;i < names.length;i++){
System.out.println(names[i]);
}
/*5:数组元素的默认初始化值
* >数组元素是整型(int,short,long,byte),默认是0
* >浮点型(float,double),0.0;
* >char类型:ASCII码值中的0,而不是'0'
* >boolean类型:false
*
* >数组元素是引用类型(String):默认是null;
* 引用类型,默认是null
* */
int[] arr = new int[4];
for(int i = 0;i < 4;i++) {
System.out.println(arr[i]);//输出是4个0
}
- 二维数组的使用
与一维数组类似1: 一位数组的声明和使用
2:如何调用数组指定位置的元素
3:如何获取数组的长度
4:如何遍历数组
5:数组元素的默认初始化值
public static void main(String[] args) {
//二维数组的声明和初始化
int[] arr = new int[]{1,2,3};
//静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//动态初始化
String[][] arr2 = new String[3][2];
//动态初始化第二种方式,不写行
String[][] arr3 = new String[3][];
arr3[0] = new String[4];
//错误方式
//String[][] arr4 = new String[][2];
//下面也是正确的
int [][] arr5={{1,2,3},{4,5},{6,7,8}};//类型推断,String不行
//调用指定位置的元素
System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
//获取数组长度
System.out.println(arr1.length);//3
System.out.println(arr1[0].length);//3
System.out.println(arr1[1].length);//2
//遍历二维数组
//主要是j的取值范围
for(int i = 0;i < arr1.length;i++) {
for(int j = 0;j < arr1[i].length;j++) {
System.out.println(arr1[i][j] + " ");
}
System.out.println();
}
/*/默认初始化值
//规定,二维数组分为外层数组元素,内层数组元素
* int[][] arr = new int[4][3];
* 外层元素:arr[0],arr[1],等
* 内层元素:arr[0][0],arr[1][2];等
*
*/
int[][] arr9 = new int[4][3];
System.out.println(arr9[0]);//[I@694e1548 默认是地址值
System.out.println(arr9[0][0]);//0
//默认初始化值
/*针对初始化方式一:int[][] arr = new int[4][4];
* 外层元素初始化值为:地址值
* 内层元素的初始化值为:与一维数组初始化情况相同
*
* 针对初始化方式二:int[][] arr = new int[4][];
* 外层初始化值为:null
* 内层元素初始化值为:不能调用,否则报错
* */
}
6.数组的练习
package com.learn.exerse;
import java.util.Scanner;
/*从键盘输入学生成绩,找出最高分,并输出学生成绩等级
* 成绩>=最高分-10 等级为“A”
* 成绩>=最高分-20 等级为“B”
* 成绩>=最高分-30 等级为“C”
* 其余 等级为“D”
*先读入学生人数,根据人数创建int数组,存放学生成绩
* */
public class ArrayDemo2 {
public static void main(String[] args) {
//1.使用Scanner,读取学生个数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生人数");
int number = scanner.nextInt();
//2.创建数组,动态初始化
int[] scores = new int[number];
//3.遍历数组,给数组元素赋值
System.out.println("请输入" + number + "个学生成绩");
for(int i = 0;i < scores.length;i++) {
scores[i] = scanner.nextInt();
}
//4.获取数组元素的最大值
int maxScores = scores[0];
for(int i = 0;i < scores.length;i++) {
if(maxScores < scores[i])
maxScores = scores[i];//获取数组中的最大元素
}
//5。根据每个学生的成绩,输出等级和成绩
/*for(int i = 0;i < scores.length;i++) {
if(maxScores - scores[i] <=10)
System.out.println("第" + (i + 1) +
"个学生的成绩为" + scores[i] +
",等级为" + "A");
else if(maxScores - scores[i] <= 20)
System.out.println("第" + (i + 1) +
"个学生的成绩为" + scores[i] +
",等级为" + "B");
else if(maxScores - scores[i] <= 30)
System.out.println("第" + (i + 1) +
"个学生的成绩为" + scores[i] +
",等级为" + "C");
else
System.out.println("第" + (i + 1) +
"个学生的成绩为" + scores[i] +
",等级为" + "D");
}
*/
for(int i = 0;i<scores.length;i++) {
String level;
if(maxScores - scores[i] <= 10)
level = "A";
else if(maxScores - scores[i] <= 20)
level = "B";
else if(maxScores - scores[i] <= 30)
level = "C";
else
level = "D";
System.out.println("第" + (i+1) + "个学生的成绩为" + scores[i] + "等级为" + level);
}
}
}
杨辉三角
package com.learn.exerse;
/*第一行有1个元素,第n行有n个元素
* 每一行的第一个元素和最后一个元素都是1
* 从第三行开始,对于非第一个元素和最后一个元素的元素有
* yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
*
* */
public class YangHuiTest {
//1.声明二维数组,初始化
//2给数组元素赋值
//3遍历
public static void main(String[] args) {
int[][] yanghui = new int[10][];
for(int i = 0;i < yanghui.length;i++) {
yanghui[i] = new int[i + 1];
//2.1给首末元素赋值
yanghui[i][0] = yanghui[i][i] = 1;
//给每行的非首末元素赋值
if(i > 1) {
for(int j = 1;j < yanghui[i].length-1;j++) {
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
}
}
}
for(int i = 0;i < yanghui.length;i++) {
for(int j = 0;j < yanghui[i].length;j++) {
System.out.println(yanghui[i][j]);
}
}
}
}
好了,先写这么多