方法与数组
调用方法
//调用方法
boolean bool=isRunNian(2022);
打印三角
public static void printTriangle(int line){
//外循环
for (int i = 0; i < line; i++) {
//内循环
for (int j = 0; j <line; j++) {
System.out.print(" ");
}
//打印内循环
for (int j = 0; j < i*2-1; j++) {
System.out.print("*");
}
System.out.println("");
}
}
控制台输入
Scanner input=new Scanner(System.in);
int num= input.nextInt();
数组写法
//第一种
int[] nums = new int[5];
for (int i = 0; i < nums.length; i++) {
nums[i]=i+1;
}
//第二种
int[] nums2;
nums2 = new int[5];
//第三种
int[] nums3 = new int[]{1,2,3,4,5};
//第四种
int[] nums4 ={1,2,3,4,5};
数组遍历打印
//for遍历
int len = scores.length;
for (int i = 0; i < len; i++) {
int score =scores[i];
System.out.println(score);
}
//forearch遍历
for(int x:scores){
System.out.println(x);
}
可变参数
public static void print1(int... x){
int len=x.length;
for (int i = 0; i < len; i++) {
System.out.println(x[i]);
}
}
1.可变参数只能是参数列表中的最后一个
2.可变参数作为数组使用
空指针
NullPointerException
数组下标越界
ArrayIndexOutOfBoundsException
随机数
Random r = new Random();
猜数
bool类型,if else判断
int[] nums = new int[5];
int len = nums.length;
Random r = new Random();
for (int i = 0; i <len; i++) {
nums[i]=r.nextInt(50);
}
Scanner input = new Scanner(System.in);
System.out.println("请输入你要猜的数(50以内)");
int usernumber = input.nextInt();
boolean flag = false;
for(int x:nums){
if(usernumber==x){
flag=true;
break;
}
}
if (flag){
System.out.println("猜对");
}else {
System.out.println("猜错");
}
}
}
打印金字塔
char[] cs = {'A','B','C','D','E','F','G'};
//外循环
int len = cs.length;
for (int i = 1; i <=len; i++) {
//内循环
for (int j = i; j < len; j++) {
System.out.print(" ");
}
for (int j = 1; j <=i*2-1 ; j++) {
System.out.print(cs[i-1]);
}
System.out.println();
}
}
二维数组
int[][] scores= {{11,11,11},{12,12,12},{13,13,13}};
最大最小值算法
定义数组,输出
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int max = max(num);
System.out.println("数列最大值"+max);
int min = min(num);
System.out.println("数列最小值"+min);
}
1.求最大值
两两比较,进行交换
//求最大值
public static int max(int[] num) {
int max = num[0];
int len = num.length;
for (int i = 0; i < len; i++) {
if (num[i] > max) {
num[i] = num[i] + max;
max = num[i] - max;
num[i] = num[i] - max;
}
}
return max;
}
2.求最小值
同理得
//求最小值
public static int min(int[] num) {
int min = num[0];
int len = num.length;
for (int i = 0; i < len; i++) {
if (num[i] < min) {
num[i] = num[i] + min;
min = num[i] - min;
num[i] = num[i] - min;
}
}
return min;
}
冒泡排序
外循环控制元素数量,内循环控制元素下标比较
//外循环控制轮数
for (int i = 0; i < nums.length-1; i++) {
//内循环
for (int j = 0; j < nums.length-1-i; j++) {
if (nums[j]>nums[j+1]){
nums[j]=nums[j]+nums[j+1];
nums[j+1]=nums[j]-nums[j+1];
nums[j]=nums[j]-nums[j+1];
}
}
}
选择排序
//记录每次比较的最小值下标
int minIndex=0;
for (int i = 0; i <nums.length-1 ; i++) {
//每轮最小值下标
minIndex=i;
for (int j = i+1; j < nums.length; j++) {
if (nums[minIndex]>nums[j]){
minIndex=j;
}
}
//判断需要交换的数下标是否是自己
if (minIndex!=i){
nums[minIndex]=nums[minIndex]+nums[i];
nums[i]=nums[minIndex]-nums[i];
nums[minIndex]=nums[minIndex]-nums[i];
}
}
直接插入排序算法
for (int i = 1; i < nums.length; i++) {
int temp=nums[i];//记录操作数
int j=0;
for (j = i-1; j >=0 ; j--) {
if (nums[j]>temp){
nums[j+1]=nums[j];
}else {
break;
}
}
if (nums[j+1]!=temp){
nums[j+1]=temp;
}
}
二分查找
public static int binarySearch(int[]nums ,int key){
int start = 0;//开始下标
int end =nums.length-1;//结束下标
while (start<=end){
int middle=(start+end)/2;//>>>1
if (nums[middle]>key){
end=middle-1;
}else if (nums[middle]<key){
start=middle+1;
}else {
return middle;
}
}
return -1;
}
}
Arrays
二分查找
binarySearch
//二分查找
int index=Arrays.binarySearch(nums,44);
System.out.println("找到的下标:"+index);
输出数组
toString
//输出数组
System.out.println(Arrays.toString(nums));
排序数组,快速排序
sort
//排序数组
int[] nums2={15,441,64,6,18,4,1,3,4815,4815,6};
Arrays.sort(nums2);//快速排序
System.out.println(Arrays.toString(nums2));
数组复制
copyOf
//数组复制
int[] nums3=Arrays.copyOf(nums2,12);
System.out.println(Arrays.toString(nums3));
效率最高数组复制
arraycopy
//效率最高的数组复制
int[] nums4=new int[nums2.length];
System.arraycopy(nums2,0,nums4,0,nums2.length);
System.out.println(Arrays.toString(nums4));
判断两数组值是否相等
equals
//判断两个数组的值是否相等
System.out.println(Arrays.equals(nums,nums2));
填充数组
fill
//填充数组
int[] nums5=new int[nums4.length];
Arrays.fill(nums5,0);
System.out.println(Arrays.toString(nums5));
构造方法
public class Test18 {
public static void main(String[] args) {
Dog dog = new Dog();//实例化
}
}
class Dog {
public Dog(){
System.out.println("构造方法");
}
}