一:
答案:be
解析:
① int []x,y [] 相当于: int [] x; int [] y [];
②同类型的才可以相互赋值
③满足字符类型提升的也可以赋值
二:
打印一个10行的杨辉三角
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
int [][] arr = new int[10][];//由于每一行中的列数不同,所以第二个[]内不填数据
for(int i = 0;i < arr.length;i++){
arr[i] = new int[i + 1];
arr[i][0] = arr[i][i] = 1;
if(i > 1){
for(int j = 1;j < arr[i].length - 1;j++){
//注意,只有有这两种对应数据的数才能存在于循环之中
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++)//二维数组为一维数组指向另一个一维数组所构成的数组
System.out.print(arr[i][j] + " ");
System.out.println();
}
}
}
回顾:
①输出杨辉三角可以先把外框输出:首尾均为1,其余为系统默认值0
② 注意数组的定义,需要按照不同行进行每一行的一维数组的创建
③注意赋值时循环的范围
三:
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
int [] arr = new int[6];
for(int i = 0 ;i < arr.length;i++){
arr[i] = (int)(Math.random() * 30 + 1);
for(int j = 0;j < i;j++){//当i为0时,此循环不进行
if(arr[i] == arr[j]){
i--;
break;
}
}
}
for(int i = 0;i < arr.length;i++)
System.out.print(arr[i] + " ");
System.out.println();
}
}
四:
定义一个含10个元素的数组arr1,将arr1复制给arr2
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
int [] arr1,arr2;//声明两个int[]类型的数组
arr1 = new int[]{2,3,5,7,11,13,17,19};//arr1数组初始化
for(int i = 0;i< arr1.length;i++)//arr1数组内容展示
System.out.print(arr1[i] + " ");
System.out.println();
//arr1的复制
arr2 = new int[arr1.length];
for(int i = 0;i
解析:
①arr2 = arr1不是复制操作,而是使arr2与arr1共同管理arr1本身所管理的数组空间,arr1或者arr2改变,都会引起数组的改变
五:
数组的反转
①方法一:二分法
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
String [] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
//"二分法"的使用
// 数组的长度从1开始数,i为数组的索引(下角标),从0开始,不要搞混
//i < arr.length / 2中的<加不加=,需要根据题目来定
//如果只是i < arr.length,则数组不变,因为一开始改变了,后来又变回去了
for(int i = 0;i < arr.length / 2;i++){
//数组元素交换位置
String temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
for(int i = 0;i < arr.length;i++)
System.out.print(arr[i] + " ");
System.out.println();
}
}
②方法二:
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
String [] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
//方法二
for(int i = 0,j = arr.length - 1;i < j;i++){
//数组元素交换位置
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
for(int i = 0;i < arr.length;i++)
System.out.print(arr[i] + " ");
System.out.println();
}
}
六:
查找算法(搜索)
①方法一:线性查找
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
String [] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
for(int i = 0;i < arr.length;i++)
System.out.print(arr[i] + " ");
System.out.println();
//线性查找
String dest = "BB";
boolean isFlag = true;
for(int i = 0;i < arr.length;i++){
if(dest.equals(arr[i])){
System.out.println("找到了,位置为:" + i);
isFlag = false;
break;
}
}
//只在这种情况下输出未找到,可以采用此方式
if(isFlag)
System.out.println("未找到!");
}
}
②二分法:只适用于有顺序的一组数
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int [] arr = new int[]{1,7,15,55,67,86,94,100};//递增的一组数
System.out.println("请输入你想查找的数:");
int dest = in.nextInt();
int head = 0;
int end = arr.length - 1;
boolean isFlag = true;
while(head <= end){
int middle = (head + end) / 2;
if(dest == arr[middle]){
System.out.println("所查找数的位置为:" + middle);
isFlag = false;
break;
} else if(dest > arr[middle])
head = middle + 1;
else
end = middle - 1;
}
if(isFlag = true)
System.out.println("未找到你所要的数据!");
}
}
③差值法
当数据之间差值较小时,可以采取此方法。即:(要求的数 — 数组末尾的数)/(数组末尾的数—数组开头的数),通过找出此数在数组中的占比情况进行分割,类似二分法
解析:
①线性查找在数据较多时效率较低,二分法只适用于有顺序的一组数
②二分法的操作流程为:
③当想输出的语句写在循环里面or外面都未符合我们想要的输出需求,可以采取boolean变量
④x.equals()是内容之间(String型等)进行比较。即为:x的内容在()内的变量的内容中有没有相同的
⑤整型之间可以直接用==进行比较
七:
排序算法之一:冒泡排序
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
int [] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};
//冒泡排序,使数据从小到大排列
for(int i = 0;i < arr.length - 1;i++){
for(int j = 0;j < arr.length - 1 -i;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++)
System.out.print(arr[i] + " ");
}
}
解析:
回顾:
①循环中 i 和 j 一定不要混!
八:
数组中Arrays工具的使用
package zzx.com;
import java.util.Arrays;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
//1.boolean equals(int []a,int []b)
int [] arr1 = new int []{1,2,3,4};
int [] arr2 = new int []{1,3,2,4};
boolean isArrays = Arrays.equals(arr1,arr2);
System.out.println(isArrays);
//2.String toString(int []a) 输出数组信息
System.out.println(Arrays.toString(arr1));
//3.void fill(int []a,int val) 将指定值填充到数组中
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));
//4.void sort(int []a) 对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//5.int binarySearch(int []a,int key) 二分查找某数的位置
int [] arr3 = new int[]{-98,-34,2,54,66,79,105,210,333};
int index = Arrays.binarySearch(arr3,210);
//System.out.println(index); 只要返回的是个负数,就一定是没有找到
//可以更合适地写:
if(index >= 0)
System.out.println(index);
else
System.out.println("未找到");
}
}