作业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