Java 数组的学习以及一些常用方法

本文详细介绍了Java数组的概念、定义、初始化、遍历和排序,包括数组的三种初始化方法、数组元素的访问和修改,以及如何使用Scanner类进行输入处理。同时,提供了多个示例代码,如数组排序练习、猜字母游戏等,帮助读者深入理解数组的应用。
摘要由CSDN通过智能技术生成

1. 数组

1.1 什么是数组?

数组 就是最基本的一种数据结构。
• 是一组相同数据类型的元素组成的集合。
• 元素按线性顺序排列。
• 可以通过元素所在的位置的顺序号(下标、索引)做标识来访问每一个元素。

1.2 数组的定义

数据类型[ ] 数组名 = new 数据类型[大小]
例如:

int [] a =new int [5];

要点
①需要有确切的数据类型
②需要整体的数组命名
③不能缺少"[ ]"

数组元素: 通过下标/索引 index
index范围: 0 ~ length-1

1.3 数组的初始化

数组的初始化方法有三种:

 //方式一:在声明的同时初始化,以及确定数组的内容
 //不能再次赋值
 int[] arr1 = {1,2,3,4};

//方式二:在声明的同时初始化,以及确定数组的内容
//可以再次赋值
int[] arr2 = new int[]{1,2,3,4,5};

//方式三:在声明的同时初始化,只能确定长度,内容全部都是默认值
//默认值:整数-0;浮点-0.0;char-\u0000
int[] arr3 = new int [5];

1.4 数组的遍历

		int []arr2 = new int []{3,4,5,6,7,8,9};
		
		System.out.println("---------------");
		//如何迭代\遍历数组
        for (int i = 0 ; i<arr2.length;i++){
            System.out.print(arr2[i]+"\t");
        }
        System.out.println("\n---------------");
        //通过遍历,将数组元素赋值成{10,20,30,40,50}
        for(int i = 0;i<arr2.length;i++){
            arr2[i]=(i+1)*10;
            System.out.print(arr2[i]+"\t");
        }

运行结果:
在这里插入图片描述

1.5 数组的排序练习

输入10个数字,并对数字进行排序

package Array;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int [] arr =new int[10];
        System.out.println("请输入10个数字:(将进行排序)");
        for(int i=0;i<arr.length;i++){
            arr[i] = scan.nextInt();
        }
        scan.close();
        System.out.println("数组排序:");
        Text(arr);
        System.out.println();
    }

    //排序
    public static int[] Text(int a[]){
        for(int i = 0;i<a.length;i++){
            for(int j=i+1;j<a.length;j++) {
                if (a[i] > a[j]) {
                    int b = a[i];
                    a[i] = a[j];
                    a[j] = b;
                }
            }
            System.out.print(a[i]+"\t");
        }
        return a;
    }
}

运行结果:
在这里插入图片描述

2. Scanner

int nextInt(): 		 获取控制台内容, 并且转换成int值返回
double nextDouble(): 获取控制台内容,并且转换成double返回
String next(): 		 获取控制台字符串, 并返回(遇到回车或者空格读取结束)
String nextLine(): 	 获取控制台一整行字符串,并返回(遇到回车结束)
package API;

import java.util.Scanner;

public class Demo03Scanner {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        //字符串,遇到  #回车#  读取结束
        String str1 = scan.nextLine();
        System.out.println("字符串:"+str1);

        //整数
        int i = scan.nextInt();
        System.out.println("整数:"+i);

        //小数
        double dou = scan.nextDouble();
        System.out.println("小数:"+dou);

        //从控制台读取字符串  !!!!遇到空格和回车结束读取。
        String str = scan.next();
        System.out.println("字符串:"+str);
    }
}

测试结果:
在这里插入图片描述

3.Math简单使用

package API;

public class Demo02Math {
    public static void main(String[] args) {
        //Math ——>数学类
        //返回一个随机数
        double rand= Math.random();//[0-1)之间的数
        System.out.println(rand);

        //[0,100)的整数
        int rand1=(int)(Math.random()*100);
        System.out.println(rand1);

        //[65,90]
        int rand2=(int)(Math.random()*26+65);
        System.out.println(rand2);

        //随机大写字母和小写字母
        char C = (char)(Math.random()*26+65);
        char c = (char)(Math.random()*26+97);
        System.out.println(C+"\t"+c);

        //求次方
        int pow = (int)(Math.pow(2,10));
        System.out.println(pow);

        //根号
        double sqr =  Math.sqrt(9);
        System.out.println(sqr);

        //绝对值
        int a = Math.abs(-9);
        System.out.println(a);
    }
}

测试结果:
在这里插入图片描述

4. print

package API;

public class Demo01Print {
    public static void main(String[] args) {
        //可以不写参数,直接使用就是换行
        System.out.println();
        //不换行,必须有内容
        System.out.print("\n");
        System.out.println(2);

        //常见的转义字符 \n->回车    \r->换行  \t->制表符
    }
}

5. 猜字母游戏

package Array;

import java.util.Arrays;
import java.util.Scanner;

public class Demo02Small {
    public static void main(String[] args) {
        //猜字母游戏
        Scanner scan = new Scanner(System.in);
        System.out.println("欢迎来到猜字母游戏!");
        //生成5位字符
        char []b = randomChars();
        System.out.println(Arrays.toString(b));//显示数组的内容
        //判断输入的字符
        int q =0;
        while(q<5) {
            System.out.println("------------------");
            System.out.println("请输入猜数:(5个字符)");
            String str = scan.nextLine();
            char []a =parseChar(str);
            int []res= compare(b,a);
            System.out.print("字母正确的有:"+res[0]+"\t");
            System.out.println("位置正确的有:"+res[1]);
            if(q==5){
                System.out.println("游戏结束!");
            }else if(res[0]==5&&res[1]==5){
                System.out.println("恭喜你!全部正确!");
                break;
            }else{
                System.out.println("还剩"+(4-q)+"次机会");
                q++;
            }
        }
    }

    //生成5位字符
    public static char[] randomChars(){

        char []x = new char[5];
        for(int i=0;i<5;i++) {
            int y =(int)(Math.random()*2+1);
            if(y==1){
                x[i] = (char) (Math.random() * 26 + 65);
            }else{
                x[i]= (char) (Math.random() * 26 + 97);
            }
            for(int j=0;j<i;j++){
                if(x[i]==x[j]){
                    i--;
                    break;
                }
            }
        }
        return x;
    }

    //将字符串转换为数组
    public static char[] parseChar(String str) {
        char []a = new char[5];
        for (int i = 0;i<a.length;i++){
            a[i]=str.charAt(i);
        }
        return a;
    }

    //比较
    public static int[] compare(char[] answer,char[] guess) {
        int []result = new int[2];
        for(int i = 0;i<answer.length;i++){
            for(int j =0;j<guess.length;j++){
                if(answer[i]==guess[j]){
                    result[0]++;
                    if(i==j){
                        result[1]++;
                    }
                }
            }
        }
        return result;
    }
}

因为随机生成的字母在5次中难以答出,故直接把随机字母的结果在语句起始贴出。
测试结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值