1.现有int[] arr 输出其中最大值,和下标
public static void main(String[] args) {
int[] arr = {4, 3, 5, 1, 2};
int max = arr[0];
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
index = i;
}
}
System.out.println("这个数组的最大值为:" + max + " 下标为:" + index);
}
2.现有两个数组如下,要将arr变成{7,6,5,4,3,2,1}
int [] arr={4,3,2};
int [] arr1={7,6,5,1}
//第一种方法:
public static void main(String[] args) {
int[] arr = {4, 3, 2};
int[] arr1 = {7, 6, 5, 1};
arr1= Arrays.copyOf(arr1,arr.length+arr1.length);
System.arraycopy(arr,0,arr1,3,arr.length);
arr1[arr1.length-1]=1;
for (int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}
}
//第二种方法:
public static void main(String[] args) {
int[] arr = {4, 3, 2};
int[] arr1 = {7, 6, 5, 1};
//定义一个新数组,长度为两个数组之和
int[] arr2 = new int[arr.length + arr1.length];
//将旧数组赋值给新数组
System.arraycopy(arr, 0, arr2, 0, arr.length);
System.arraycopy(arr1, 0, arr2, arr.length, arr1.length);
/*for (int i=0;i<arr2.length;i++){
if (i<arr.length){
for (int j =0;j<arr.length;j++)
arr2[j]=arr[j];
}else {
for (int j=0;j<arr1.length;j++)
arr2[j+arr.length]=arr1[j];
}
System.out.println(arr2[i]);
}*/
System.out.println("-------------");
//排序
for (int i = 0; i < arr2.length - 1; i++) {
for (int j = 0; j < arr2.length - i - 1; j++) {
if (arr2[j] < arr2[j + 1]) {
int t = arr2[j];
arr2[j] = arr2[j + 1];
arr2[j + 1] = t;
}
}
}
//把新数组arr2的地址赋值给arr
arr = arr2;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
3.设计一个添加元素的方法 在方法中初始化 长度为16的int数组 当添加的元素个数 大于 长度 的一半的时候 扩容,扩容为原来数组长度的一倍,并且返回新数组(需要借助一个全局变量维护数组中添加进去的元素个数)
//第一种方法
static int count = 0; //全局
static int[] arr=new int[16]; //全局
public static void main(String[] args) {
int[] arr1 = add(8);
System.out.println(arr[0]);
}
public static int[] add(int k){
if(count>arr.length/2){
arr=Arrays.copyOf(arr,arr.length*2);
}
for (int i=0;i<arr.length;i++){
if (arr[i]==0){
arr[i]=k;
count++;
break;
}
}
return arr;
}
//第二种方法:
static int n=9;//全局
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr=new int[n];
for (int i=0;i<arr.length;i++){
System.out.println("输入你添加的第"+(i+1)+"个元素:");
arr[i]=sc.nextInt();
}
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
System.out.println("--------------");
arr=add(arr);
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static int[] add(int[] arr){
int[] arr2=new int[16];
if (n>arr2.length/2){
return Arrays.copyOf(arr,arr2.length*2);
}else{
return Arrays.copyOf(arr,arr2.length);
}
}
- 以下代码分别打印什么值? (1 2 1)
public static void main(String args[]){
int [] arr={1,2,3};
m1(arr);
System.out.println(arr[2]); //1
int [] arr1=m2(arr);
System.out.println(arr1.length); //2
arr=m2(arr1);
System.out.println(arr.length); //1
}
public static void m1(int [] arr){
arr[2]=1;
}
public static int[] m2(int [] arr){
return Arrays.copyOf(arr,arr.length-1);
}
5.以下代码分别打印什么值?
public static void main(String args[]){
int i =10;
m1(i);
//输出的是上面定义的i,所以是10
System.out.println(i); //10
i=m1(i);
//i++,先赋值,再自加,所以为10
System.out.println(i); //10
i=m2(i);
//--i,先自减,再赋值,所以为9
System.out.println(i); //9
System.out.println("---------------");
byte [] arr={7,5,6,9,8,4,1};
m3(arr);
System.out.println(arr[0]); //7
System.out.println(arr.length); //7
System.out.println("---------------");
arr=m3(arr);
System.out.println(arr[1]); //9
System.out.println(arr.length); //9
}
public static byte[] m3(byte [] arr){
byte[] arr1=Arrays.copyOf(arr,arr.length+2);
System.arraycopy(arr,2,arr1,0,3);
return arr1;
}
public static int m1(int i){
return i++;
}
public static int m2(int i){
return --i;
}