public class ArrayTest {
//运用数组打印输出10-50
public static void main(String[] args) {
int[] arr = new int[5]; // 有效下标是0~长度-1
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
//arr[5] = 60; 下标不可以越界
//arr[-1] = 5;
for (int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
}
}
class ArrayTest2 {
//运用数组打印输出10-50
public static void main(String[] args) {
int[] arr = new int[5]; // 有效下标是0~长度-1
for (int i = 0; i < 5; i++) { // 数组和循环是在一起
// 0~4
arr[i] = (i + 1) * 10;
}
// 数组的遍历(迭代)
for (int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
}
}
class Exer1 {
public static void main(String[] args) {
// 创建一个数组, 保存10个奇数, 遍历数组打印输出
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
arr[i] = 2 * i + 1;
}
// 遍历数组
for (int i = 0; i < 10; i++) {
System.out.println(arr[i]);
}
}
}
class ArrayTest3 {
//打印10 20 30 40 50
public static void main(String[] args) {
int[] arr = new int[5]; // 数组对象一旦创建,长度就是固定的,不可改变
System.out.println("数组长度:" + arr.length);
//arr.length = 10; arr.length是一个常量, 固定不变
for (int i = 0; i < arr.length; i++) { // 数组和循环是在一起
// 0~4
arr[i] = (i + 1) * 10;
}
// 数组的遍历(迭代)
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
class ArrayTest4 {
//打印A-Z 26个英文字母
public static void main(String[] args) {
char[] chArr = new char[26];
for (int i = 0; i < chArr.length; i++) {
chArr[i] = (char)('A' + i);
}
// 遍历
for (int i = 0; i < chArr.length; i++) {
System.out.print(chArr[i] + " ");
}
System.out.println();
}
}
class Exer2 {
// 创建6个元素的数组, 保存你的生日和今天的日期,最后打印输出.
public static void main(String[] args) {
int[] arr = new int[6]; // 1994-1-23 2016-7-27
arr[3] = 1994;
arr[4] = 1;
arr[5] = 23;
arr[0] = 2016;
arr[1] = 7;
arr[2] = 27;
System.out.println("生日:" + arr[3] + "年" + arr[4] + "月" + arr[5] + "日");
System.out.println("今天:" + arr[0] + "年" + arr[1] + "月" + arr[2] + "日");
}
}
class Exer3 {
// 创建26个元素的字符数组, 保存26个小写字母, 遍历打印输出
public static void main(String[] args) {
char[] chArr = new char[26];
for (int i = 0; i < chArr.length; i++) {
chArr[i] = (char)('a' + i);
}
// 遍历
for (int i = 0; i < chArr.length; i++) {
System.out.print(chArr[i] + " ");
}
System.out.println();
}
}
class Exer4 {
// 创建36个元素的字符数组, 前26个保存小写字母,后10个保存10个数字字符
public static void main(String[] args) {
char[] chArr = new char[36];
for (int i = 0; i < 26; i++) {
chArr[i] = (char)('a' + i);
}
for (int i = 26; i < chArr.length; i++) {
chArr[i] = (char)('0' + i - 26);
}
// 遍历
for (int i = 0; i < chArr.length; i++) {
System.out.print(chArr[i] + " ");
}
System.out.println();
}
}
class Exer42 {
// 创建36个元素的字符数组, 前26个保存小写字母,后10个保存10个数字字符
public static void main(String[] args) {
char[] chArr = new char[36];
for (int i = 0; i < 26; i++) {
chArr[i] = (char)('a' + i);
}
for (int i = 0; i < 10; i++) {
chArr[26 + i] = (char)('0' + i);
}
// 遍历
for (int i = 0; i < chArr.length; i++) {
System.out.print(chArr[i] + " ");
}
System.out.println();
}
}
class ArrayTest5 {
//静态初始化的练习
public static void main(String[] args) {
int[] arr1 = new int[]{9, 2, 1, 3, 8}; // 静态初始化, 比较灵活, 声明和初始化可以分开
int[] arr2 = {1, 2, 0, 9, 3}; // 写法固定, 只适用于数组的声明和创建在同一行.
int[] arr3;
//arr3 = {3, 4, 5};
arr3 = new int[]{3, 4, 5};
}
}
class ArrayTest6 {
public static void main(String[] args) {
// 创建引用数组, 数组元素中只能保存地址, 但是地址可以指向对象, 所以也可以称为对象数组
MyDate[] arr = new MyDate[5]; // 此时并没有MyDate对象产生, 数组中都是空洞
arr[0] = new MyDate(1980, 1, 1);
arr[4] = new MyDate(2011, 5, 8);
arr[1] = new MyDate(1990, 2, 2);
arr[3] = new MyDate(2008, 8, 8);
arr[2] = new MyDate(1999, 9, 9);
for (int i = 0; i < arr.length; i++) { // 如果数组中有空洞, 就是抛出空指针异常
System.out.println(arr[i].say());
}
}
}
class ArrayTest7 {
//字符串数组的创建
public static void main(String[] args) {
String[] strArr = {"aaa", "yyy", "bbb", "xxx", "qqq"};
for (int i = 0; i < strArr.length; i++) {
System.out.println(strArr[i]);
}
}
}
class ArrayTest8 {
//main方法中用字符串数组做参数
// 命令行参数的用法
public static void main(String[] args) { // 命令行参数的用法
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
class Exer5 {
// 从命令行接收8个分数值, 打印分数的等级,如果分数值大于80,打印良, 小于60打印不及格, 其他打印其他
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
int score = Integer.parseInt(args[i]);
if (score > 80) {
System.out.println(score + " : 良");
} else if (score < 60) {
System.out.println(score + " : 不及格");
} else {
System.out.println(score + " : 其他");
}
}
}
}
class ArrayTest10 {
//创建MyDate类型的对象date1,其参数由命令行参数获取
public static void main(String[] args) { // 命令行参数的用法
MyDate date1 = new MyDate( Integer.parseInt(args[0]),
Integer.parseInt(args[1]),
Integer.parseInt(args[2]));
System.out.println(date1.say());
}
}
//MyDate 类的定义
class MyDate {
int year;
int month;
int day;
//全参构造器
public MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public String say() {
return year + "年" + month + "月" + day + "日";
}
}
class Exer6 {
// 生成5个[10~30)的随机整数
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
int rand = (int)(Math.random() * 20 + 10);
System.out.println(rand);
}
}
}
class ArrayTest11 {
//生成[0~1)、[0~101)、[0~50)的随机小数
public static void main(String[] args) {
double rand1 = Math.random(); // 生成一个随机小数[0~1)
System.out.println(rand1);
double rand2 = Math.random() * 101; // 生成一个随机小数[0~101)
System.out.println(rand2);
int rand3 = (int)(Math.random() * 50); // 生成一个随机整数[0~50)
System.out.println(rand3);
}
}
class ArrayTest12 {
//创建一个8个元素的数组,每个元素被[1-20)的随机数赋值,并遍历打印、求和、平均值、最大值并打印
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
// 遍历
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
// 求和
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println("sum:" + sum);
// 求平均值
int avg = sum / arr.length;
System.out.println("avg:" + avg);
// 找最大值
int max = arr[0]; // 先假定第一个数是最大值
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) { // 从数列中遍历每个数,都和max作比较, 如果某个数比max还大, 你就是max
max = arr[i];
}
}
System.out.println("max:" + max);
System.out.println();
}
}