java数组简单习题

这个博客包含多个Java编程的基础练习,涉及数组操作、数据查找、数组扩容、字符串比较、算法实现等。作业涵盖了计算平均分、查找数组元素、数组排序、去重、随机数生成、数字排列、字符串比较及棋盘路径计数等经典问题。
摘要由CSDN通过智能技术生成

作业1:
    请输入10位同学的java成绩,
    1、求平均成绩,最高成绩、最低成绩

   2、对10的成绩按照从低到高的顺序排列

package com.openlab.day9;

import java.util.Scanner;

public class Work01 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入10位同学的java成绩:");
		int[] arr = new int[10];
		for(int i = 0; i < 10; i++){
			arr[i] = input.nextInt();
		}
		int[] result = score(arr);
		System.out.print("最高成绩是:" + result[0]);
		System.out.println();
		System.out.print("最低成绩是:" + result[1]);
		System.out.println();
		double average = average(arr);
		System.out.print("平均成绩是:" + average);
		System.out.println();
		System.out.print("对10个学生成绩排序的结果是:");
		sort(arr);
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}

	public static int[] score(int[] arr){
		int max = arr[0];
		int min = arr[0];
		for(int i = 1; i < arr.length; i++){
			if(arr[i] > max){
				max = arr[i];
			}
			if(arr[i] < min){
				min = arr[i];
			}
		}
		int[] result = {max, min};
		return result;
	}

	public static double average(int[] arr){
		int sum = 0;
		double average = 0;
		for(int i = 0; i < arr.length; i++){
			sum += arr[i];
		}
		average = sum / 10;
		return average;
	}
	//用改进的选择排序
	public static void sort(int arr[]) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[j] < arr[i]) {
					arr[j] = arr[j] ^ arr[i];   
					arr[i] = arr[j] ^ arr[i]; 
					arr[j] = arr[j] ^ arr[i]; 
				}
			}
		}
	}
}

作业2:
    给定一个数组,判断某个元素是否在该数组中

package com.openlab.day9;

import java.util.Scanner;

public class Work02 {

	public static void main(String[] args) {
		int[] arr = new int[] { 56, 45, 23, 5, 9, 7, 48, 18, 78, 66 };
		Scanner input = new Scanner(System.in);
		System.out.print("请输入一个数字:");
		int num = input.nextInt();
		if (judge(arr, num)) {
			System.out.println("该元素在数组中");
		} else {
			System.out.println("该元素不在数组中");
		}
	}

	public static boolean judge(int[] arr, int num) {
		boolean flag = false;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == num) {
				flag = true;
			}
		}
		return flag;
	}
}


作业3: 

     给定一个数组,大小为10,输入十个同学的成绩,求这些成绩的总分数
    某一天转入2个新同学,请再次求12个同学的平均成绩(尝试着使用扩容的形式做)

package com.openlab.day9;

import java.util.Scanner;

public class Work03 {

	public static void main(String[] args) {
		int[] arr = new int[] {99, 84, 70, 81, 86, 75, 78, 66, 76, 87};
		System.out.println("十个同学的总成绩为:" + sum(arr));
		Scanner input = new Scanner(System.in);
		System.out.print("请输入新转入两个同学的成绩:");
		int score1 = input.nextInt();
		int score2 = input.nextInt();
		int[] newArr = arrayExpansion(arr, 12);//扩容
		newArr[10] = score1;
		newArr[11] = score2;
		System.out.println("转入2个新同学,12个同学的平均成绩为:" + (sum(newArr) / 12.0));
		
	}
	
	public static int sum(int[] arr) {
		int sum = 0;
		for(int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		return sum;
	}
	//扩容
	public static int[] arrayExpansion(int[] origin, int newLen) {
		int[] newArr = new int[newLen];
		for(int i = 0; i < origin.length; i++) {
			newArr[i] = origin[i];
		}
		return newArr;
	}
}

作业4:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
    {10, 8, 5, 3, 27, 99}

package com.openlab.day9;

public class Work04 {

	public static void main(String[] args) {
		int[] coins = new int[] {10, 8, 5, 3, 27, 99};
		int times = minTimes(coins);
		System.out.println("最少" + times + "次可以拿完硬币");
	}
	//最少拿多少次就是一次拿两个
	public static int minTimes(int[] coins) {
		int times = 0;
		for(int i = 0; i < coins.length; i++) {
			if((coins[i] & 1) == 0) {//偶数能被2整除
				times += coins[i] >> 2;//直接除2
			}else {
				times += (coins[i] >> 2) + 1;//奇数需+1
			}
		}
		return times;
	}
}


     

作业5:将数组中的重复数据去重

package com.openlab.day9;

import java.util.Scanner;

public class Work05 {

	public static void main(String[] args) {
		int[] num = new int[] {10, 8, 8, 5, 3, 27, 99, 8, 5, 27, 10};
		int[] num1 = removeRepeat(num);
		for(int i = 0; i < num1.length; i++) {
			System.out.print(num1[i] + ",");
		}
	}
	public static int[] removeRepeat(int[] arr){
		int[] num1 = new int[arr.length]; 
		int index = 0;
		for(int i = 0; i < arr.length; i++) {
			boolean flag = true;//标记无重复元素
			for(int j = 0; j < num1.length; j++) {
				if(arr[i] == num1[j]) {
					flag = false;//有重复元素
					break;
				}
			}
			if(flag) {
				num1[index++] = arr[i];
			}
		}
		return num1;
	}
}

注意:flag的定义要在for循环内部


作业6:如何将10个0-10随机存入数组中

package com.openlab.day9;

public class Work06 {

	public static void main(String[] args) {
		int[] arr = putArray();
		for(int i : arr) {
			System.out.print(i + ",");
		}
	}
	
	public static int[] putArray() {
		int[] arr = new int[10];
		for(int i = 0; i < 10; i++) {
			arr[i] = (int)(Math.random()*(10 + 1)); 
		}
		return arr;
	}
}

作业7:存在整数数组nums,将该数组中的所有偶数元素排列到奇数元素前

package com.openlab.day9;

public class Work07 {

	public static void main(String[] args) {
		int[] nums = new int[] {8, 9, 45, 56, 78, 55, 69, 88, 77, 23, 28};
		int[] a = sortNum(nums);
		for(int i : a) {
			System.out.print(i + " ");
		}
	}
	
	public static int[] sortNum(int[] arr) {
		int[] a = new int[arr.length];
		int index = 0;
		for(int i = 0; i < arr.length; i++) {
			if((arr[i] & 1) == 0) {//偶数先存入
				a[index++] = arr[i];
			}
		}
		for(int i = 0; i < arr.length; i++) {
			if((arr[i] & 1) != 0) {//奇数后存入
				a[index++] = arr[i];
			}
		}
		return a;
	}  
}

作业8:
    执行下列程序的输出结果为   
    public class Test {
     public static void main(String[] args) {
     String s1 = "HelloWorld";
     String s2 = new String("HelloWorld");
     if (s1 == s2) {
     System.out.println("s1 == s2");
     } else {
     System.out.println("s1 != s2");
     }
     if (s1.equals(s2)) {
     System.out.println("s1 equals s2");
     } else {
     System.out.println("s1 not equals s2");
     }
     }
     }

    A. s1 == s2
        s1 not equals s2
    B. s1 == s2
        s1 equals s2
    C. s1 != s2
        s1 not equals s2
    D. s1 != s2
        s1 equals s2

D,原因:

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

基本数据类型

byte,short,char,int,long,float,double,boolean

基本数据类型之间的比较需要用双等号(==),因为他们比较的是值

引用数据类型

接口、类、数组等非基本数据类型

Java中的字符串String属于引用数据类型。因为String是一个类

当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为没new一次就会重新开辟一个新的堆内存空间

作业9:某个人进入如下一个棋盘中,要求从左上角开始走,
    最后从右下角出来(要求只能前进,不能后退),
    问题:共有多少种走法?
    
    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值