整理笔记--Java基础(数组)

Posted kz2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整理笔记--Java基础(数组)相关的知识,希望对你有一定的参考价值。

int[ ]arr = new int[3]==>动态初始化。

int[ ]arr = {1,2,3}==>静态初始化。

Java没有多维数组,二维数组实际上是一维数组的一维数组。

例子1:

/*分析以下需求,并用代码实现:

(1)打印由7,8,9三个数组组成的三位数,要求该三位数中任意两位数字不能相同

(2)打印格式最后的三位数字以空格分隔,如789 798 879 897 978 987

提示: 考虑使用for循环的嵌套

*/

public class Test1 {

public static void main(String[] args) {

//这种方法最简单

for(int i=789;i<=987;i++){

String s = String.valueOf(i);

if(s.contains("7")&&s.contains("8")&&s.contains("9")){

System.out.println(s);

/*char[] ch = { ‘7‘, ‘8‘, ‘9‘ };

StringBuffer sb = new StringBuffer();

//    要是比较四个数 就多加一个for循环  把比较条件添加上就行了

for (int i = 0; i < ch.length; i++) {

for (int j = 0; j < ch.length; j++) {

for (int j2 = 0; j2 < ch.length; j2++) {

if (i != j && j != j2 && i != j2) {    sb.append(ch[i]).append(ch[j]).append(ch[j2]).append(" ");

}}}}

System.out.println(sb);*/

}}}}

例子2:

/*数组去重问题

存在该数组: int[] arr = { 16, 23, 9, 6, 1, 23, 6, 7, 8, 23 };

去除上面定义的数组中的重复元素,把去重复后的元素存入新数组中,并打印新数组中的元素*/

public class Test2 {

public static void main(String[] args) {

int[] arr = { 16, 0, 23, 0, 9, 6, 0, 1, 23, 6, 0, 7, 8, 23 };

// 1.创建新数组

int[] newArr = new int[arr.length];

int count = step1(arr, newArr);

print(newArr);

int[] newArr2 = new int[count];

step2(newArr, newArr2, count);

print(newArr2);

}

public static void step2(int[] newArr, int[] newArr2, int count) {

for (int i = 0; i < count; i++) {

newArr2[i] = newArr[i];

}}

public static int step1(int[] arr, int[] newArr) {

int count = 0;

for (int i = 0; i < arr.length; i++) {

boolean b = true;

for (int j = 0; j < count; j++) {//这一步 把j

if (arr[i] == newArr[j]) {

b = false;

break;

}}

if (b) {

newArr[count] = arr[i];//要出现重复的元素 就必须是两个以上 所以进入上面判断的时候 count就起码等于1 循环成立

count++;

}}

return count;

}

public static void print(int[] arr) {

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i] + " ");

}

System.out.println();

}}

 

例子4:

/*请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母

思路:

1.定义以星期的字母开头的数组 String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" };

2.定义汉字数组    String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" };

3.死循环.

当键盘录入M,W等唯一的字母时, 直接打印对应的星期

当键盘录入T,S时, 继续录入第二个字母进行判断

当录入其他字母时, 直接要求继续录入*/

public class Test4 {

public static void main(String[] args) {

/*String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" };

String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" };

Scanner sc = new Scanner(System.in);

while(true){

System.out.println("请输入第一个字母:");

String s1 = sc.nextLine();

for (int i = 0; i < arr.length; i++) {

if(arr[i].toUpperCase().equals(s1.toUpperCase())){

System.out.println("星期"+arrWeek[i]);

return;

}

if(arr[i].toUpperCase().startsWith(s1.toUpperCase())){

System.out.println("请输入第二个字母");

String s2 = sc.nextLine();

s1+=s2;

//i--;//很重要!!!

}}

System.out.println("未查找到对应星期, 请重新输入");

}*/

Scanner sc = new Scanner(System.in);

System.out.println("请输入对应的星期");

while (true) {

String line = sc.nextLine();

if ("M".equals(line) || "W".equals(line) || "F".equals(line) || "".equals(line)) {

print(line);

break;

} else if ("T".equals(line)) {

String line2 = sc.nextLine();

if ("u".equals(line2) || "h".equals(line2)) {

print(line + line2);

// 这里要传入两次判断的字符串 即T+h或者T+u 只传入单一的line不能匹配

break;

}

} else if ("S".equals(line)) {

String line3 = sc.nextLine();

if ("a".equals(line3) || "u".equals(line3)) {

print(line3);

break;

}

} else {

System.out.println("请继续录入");

}}}

// 打印方法

private static void print(String line) {

int index = getIndex(line);

System.out.println(index);

String st = getWeek(index);

System.out.println("星期" + st);

}

// 找到索引后 进入这个查找对应的星期

private static String getWeek(int index) {

String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" };

String s = "";

for (int i = 0; i < arrWeek.length; i++) {

if (index == i) {

s = arrWeek[i];

}}

return s;

}

// 当用户输入字母的时候 进入这个方法查询对应的索引

public static int getIndex(String line) {

String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" };

int index = -1;

for (int i = 0; i < arr.length; i++) {

if (line.equals(arr[i])) {

index = i;

}}

return index;

}}

例子5:

public class Test5 {

public static void main(String[] args) throws IOException {

Scanner xx = new Scanner(System.in);

System.out.println("请输入行数:");

int row = xx.nextInt();

System.out.println("请输入列数:");

int coulumn = xx.nextInt();

pdd(row,coulumn);

}

public static void pdd(int a,int b){

for(int x=1;x<=a;x++){

for(int y=1;y<=x && y<=b;y++){

System.out.print(y+"*"+x+"="+y*x+"\t");

}

System.out.println();

}}}

例子6:

public class Test6 {

public static void main(String[] args) {

int i,j;

for(i=1;i<=5;i++){

for(j=2;j<=6-i;j++){

System.out.print(" ");

}

for(j=2;j<=i*2;j++){

System.out.print("*");

}

System.out.println();

}

for(i=6;i<=9;i++){

for(j=1;j<=i-5;j++){

System.out.print(" ");

}

for(j=1;j<=(10-i)*2-1;j++){

System.out.print("*");

}

System.out.println();

}}}

例子7:

/**

* 打印1-100之间的所有素数及个数 提示: 大于1的且只能被1和其本身整除的数叫素数 如:2 3 5 7 11

*/

public class Test7 {

public static void main(String[] args) {

// 1.遍历1~100

for (int i = 2; i <= 100; i++) {

// 2.调用判断素数的方法

if (isPrime(i)) {

System.out.print(i + " ");

}}}

/*返回值类型: boolean 方法名: isPrime 参数列表: int x 当该方法返回值为true时是素数

*/

private static boolean isPrime(int x) {

// 1.定义布尔类型的标识符b

boolean b = true;

// 2.从2开始遍历一直到x-1

for (int i = 2; i < x; i++) {// 这里可以试数进行验证

// 3.只要满足对i取模等于0,则证明不是素数,此时将b置为false,并结束循环

if (x % i == 0) {

b = false;

break;

}}

// 4.将值返回

return b;

}}

例子8:

public class Test08 {
    /*二维数组问题
    假如2019CBA赛季要开始了,每个人会有三个单场篮球比赛,博彩公司预测一下几个人的单场得分分别是:
    姚明:22,33,44
    易建联:12,8,14
    王治郅:33,45,65
    朱芳雨:11,66,99
    (1)求四个人的总得分之和
    (2)求四个人中单场得分最高分
    (3)求去掉单场最高分和最低分,四个人的得分总和的平均分*/
    static int i,j;
    static int count;
    public static void main(String[] args) {
        int[][]arr={{22,33,44},{12,8,14},{33,45,65},{11,66,99}};
        int a=getZongFen(arr);
        System.out.println("总分为"+a);
        int b=getZhongChang(arr);
        System.out.println("四人中场最高分是"+b);
        int max = getZuiMax(arr);
        int min = getZuiMin(arr);
        System.out.println("四人总和的平均分是"+1.0*(a-max-min)/(count-2));
    }
    //4.求单场最低分
    private static int getZuiMin(int[][] arr) {
        int min=arr[0][0];
        for (i = 0; i < arr.length; i++) {
            for (j = 0; j < arr[i].length; j++) {
                if(min>arr[i][j]){
                    min=arr[i][j];
                }
            }
        }
        return min;
    }
    //3.求单场最高分
    private static int getZuiMax(int[][] arr) {
        int max=arr[0][0];
        for (i = 0; i < arr.length; i++) {
            for (j = 0; j < arr[i].length; j++) {
                if(max<arr[i][j]){
                    max=arr[i][j];
                }
            }
        }
        return max;
        
    }
    //2.求中场得分最高的
    private static int getZhongChang(int[][] arr) {
        int max=arr[0][1];
        for (i = 0; i < arr.length; i++) {
            for (j = 1; j < arr[i].length-1; j++) {
                if(max<arr[i][j]){
                    max=arr[i][j];
                }
            }
        }
        return max;
    }
    //1.求总分
    private static int getZongFen(int[][]arr) {
        int sum=0;
        for (i = 0; i < arr.length; i++) {
            for (j = 0; j < arr[i].length; j++) {
                sum+=arr[i][j];
                count++;
            }
        }
        return sum;

    }
}

例子9:

/**

* 打印1到100之内的整数,但数字中包含9的要跳过

每行输出5个满足条件的数,之间用空格分隔

*/

public class Test9 {

public static void main(String[] args) {

int count = 0;

for (int i = 1; i <= 100; i++) {

int ge = i % 10;

int shi = i / 10;

if (ge == 9 || shi == 9) {

continue;

}

System.out.print(i + "\t");

count++;

if (count % 5 == 0) {

System.out.println();

}}}}

 

以上是关于整理笔记--Java基础(数组)的主要内容,如果未能解决你的问题,请参考以下文章

java学习笔记整理

DOM探索之基础详解——学习笔记

关于JAVA 反射 基础知识/编码经验的一些总结

关于JAVA 异常 基础知识/编码经验的一些总结

关于JAVA 反射 基础知识/编码经验的一些总结

关于JAVA 异常 基础知识/编码经验的一些总结