几个例题解答数组问题:
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 1、将数组int arr[]={56,33,51,49,102,23}
* 遍历输出打印到控制台打印格式为 [56,33,51,49,102,23]
*/
int arr [] = {56,33,51,49,102,23};//定义一个数组
for(int i=0;i<arr.length;i++){//遍历数组
if(i==0){//当数组下标为0时输出的内容
System.out.print("["+arr[i]+",");
}else if(i<arr.length-1){//当下标满足数组个数减一时输出的内容
System.out.print(arr[i]+",");
}else{//当下标等于数组长度时输出的内容
System.out.print(arr[i]+"]");
}
}
System.out.println("");//换行
System.out.println("");//换行
/*
* 2、利用冒泡排序将数组进行从小到大排序 --
* int arr[]={56,33,51,49,102,23};
*/
for(int i=0;i<arr.length-1;i++){//循环轮数
for(int j=0;j<arr.length-i-1;j++){//每轮循环的次数
if(arr[j]>arr[j+1]){//如果前面的值大于后面的值,就互换两个元素的值
int temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i=0;i<arr.length;i++){//遍历排序后的数组
if(i<arr.length-1){//如果下标小于数组的长度减一,输出的内容
System.out.print(arr[i]+"<");
}
if(i == arr.length-1){//如果下标等于数组的长度减一,输出的内容
System.out.print(arr[i]);
}
}
System.out.println("");//换行
System.out.println("");//换行
/*
* 利用选择排序将数组进行从大到小排序 --
* int arr[]={36,11,90,87,156,2};
*/
for(int i=0;i<arr.length-1;i++){//循环的轮数
for(int j=i+1;j<arr.length;j++){//每轮循环的次数
if(arr[i]<arr[j]){//如果前面的值小于后面的值就互换
int temp =arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int i=0;i<arr.length;i++){//遍历排序后的数组
if(i<arr.length-1){//如果下标小于数组长度减一,输出的内容
System.out.print(arr[i]+">");
}
if(i == arr.length-1){//如果下标等于数组的长度,输出的内容
System.out.print(arr[i]);
}
}
System.out.println("");//换行
System.out.println("");//换行
/*
* 4、现在有如下一个数组:int arr1[]={1,3,4,5,0,6,6,0,5,4,7,6,7,0,5};
要求将以上数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组为:
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5};
*/
int arr1 [] = {1,3,4,5,0,6,6,0,5,4,7,6,7,0,5};//定义一个数组
int zero = 0;
for(int i=0;i<arr1.length;i++){//统计数组arr1中0的个数,遇到0,zero就+1
if(arr1[i]==0){
zero++;
}
}
//System.out.print(zero);
System.out.println("");
System.out.println("");
int newArr [] = new int [arr1.length-zero];//定义一个新的数组,它的长度为数组arr1的长度减去zero的个数
int j=0;//新数组的下标
for(int i=0;i<arr1.length;i++){//遍历数组arr1
if(arr1[i]!=0){//如果爱arr1中的元素不为0,就加入到新的数组中
newArr[j] = arr1[i];
j++;//加入新数组后,下标+1
}
}
for(int i=0;i<newArr.length;i++){//遍历生成的新数组
if(i==0){//如果新数组下标为0,输出的内容
System.out.print("生成的新数组为["+newArr[i]+",");
}else if(i<newArr.length-1){//如果新数组下标小于数组长度减一,输出的内容
System.out.print(newArr[i]+",");
}else{//如果新数组下标等于数组长度减一,输出的内容
System.out.print(newArr[i]+"]");
}
}
System.out.println("");//换行
/*
* 定义一个整型数组,求出数组元素的和、数组元素的最大值和最小值,并输出所求的结果。
arr[]={36,11,90,87,156,2};
*/
int arr2 [] = new int []{36,11,90,87,156,2};
//等价于int arr2[]={36,11,90,87,156,2};
int max = 0;//定义最大值
int min = 0;//定义最小值
int sum = 0;//定义和
for(int i=0;i<arr2.length;i++){//遍历数组
sum+=arr2[i];//求和
}
System.out.println("该数组的和为"+sum);//输出和
for(int i=0;i<arr2.length-1;i++){
for(int j1=0;j1<arr2.length-i-1;j1++){
if(arr2[j1]>arr2[j1+1]){
int temp = arr2[j1];
arr2[j1] = arr2[j1+1];
arr2[j1+1] = temp;
}
}
}
/*for(int i=0;i<arr2.length;i++){
System.out.print(arr2[i]+" ");
}*/
System.out.println("");
max = arr2[arr2.length-1];
System.out.print("该数组的最大值为"+max);
System.out.println("");
min = arr2[0];
System.out.print("该数组的最小值为"+min);
System.out.println("");
/*
* 反转数组: arr3[]={36,11,90,87,156,2,58};
*/
int arr3 [] = new int []{36,11,90,87,156,2,58};
int newArr3 [] = new int [arr3.length];
int k=0;
for(int i=0;i<arr3.length;i++){
newArr3[k] = arr3[arr3.length-1-i];
k++;
}
for(int i=0;i<newArr3.length;i++){
if(i==0){
System.out.print("["+newArr3[i]+",");
}else if(i<newArr3.length-1){
System.out.print(newArr3[i]+",");
}else{
System.out.print(newArr3[i]+"]");
}
}
System.out.println("");
/*
* 查表法:在命令行输入1~7的值,利用下标 获取星期几 1~7分别对应星期一~星期天;输出在控制台 星期一
*/
String str =args[0];
int a = Integer.parseInt(str);
String str1[]={"","星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
if(a<0 || a>8){
System.out.print("输入的参数不合法,请重新输入!");
}
if(a>0 && a<8){
for(int i=0;i<str1.length;i++){
if(str1[a] == str1[i]){
System.out.println("今天是"+str1[i]);
}
}
}
}
}