整理笔记--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();

}}}}

原文地址:https://www.cnblogs.com/kz2017/p/8568220.html

时间: 2024-11-02 13:22:53

整理笔记--Java基础(数组)的相关文章

[java基础]数组1

[java基础]数组1 1 /** 2 文件路径:G:\JavaByHands\数组 3 文件名称:ArrayTest.java 4 编写时间:2016/6/13 5 编写说明:学习数组的使用方法~~ 6 知识来源:疯狂java讲义 7 */ 8 9 /* 10 数组是用来储存多个数据的一种数据结构~~ 11 一个数据被成为一个数组元素 12 可以通过数组元素的索引来访问数组元素 13 java要求所有的数组元素具有相同的数据类型 14 一旦数组初始化完成,数组在内存中所占的空间将被固定下来,长

[设计模式整理笔记 一] 基础知识

[设计模式整理笔记 一] 基础知识 [导读] [设计模式整理笔记 一] 基础知识 [设计模式整理笔记 二] 简单工厂模式(Simple Factory) [设计模式整理笔记 三] 工厂模式(Factory) [设计模式整理笔记 四] 抽象工厂模式(Abstract Factory) [设计模式整理笔记 五] 创建者模式(Builder) [设计模式整理笔记 六] 工厂模式与创建者模式总结 [设计模式整理笔记 七] 原型模式(ProtoType) [设计模式整理笔记 八] 单例模式(Singlet

Java基础——数组应用之StringBuilder类和StringBuffer类

一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的

Java基础——数组Array

一.数组基本概念 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 数组有三个特点: 1. 其长度是确定的.数组一旦被创建,它的大小就是不可以改变的.不可越界,如果越界,则报:ArrayIndexOutOfBoundsException 2. 其元素必须是相同类型,不允许出现混合类型. 3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型. 数组不属于八种基本数据类

Java基础——数组复习

数组是一个变量,存储相同数据类型的一组数据 声明一个变量就是在内存空间划出一块合适的空间 声明一个数组就是在内存空间划出一串连续的空间 数组长度固定不变,避免数组越界 数组是静态分配内存空间的,所有元素存放在一组连续的存储单元中,一旦分配,不可更改,不便于扩展, 数组便于查找和修改,不利于插入和删除. 使用数组 : ① 声明数组    ② 分配空间    ③ 赋值    ④ 处理数据 Java中数组定义要指定长度. 数据类型[] 数组名 = new 数据类型[数组长度]; 数据类型[][] 数组

JAVA基础-数组的排序(选择排序和冒泡排序),总结精辟!!!

1.-------寄语 对于初学JAVA的同学来说,排序是在陌生不过的一个基础题了.但是由于自己刚刚步入学习JAVA的世界,很多东西不能很好的理解,导致自己虽然可以敲出代码或者大致能够想明白, 但是对于解决问题的思想并没有很好的深入.(其实一开始学习也没必要太刨根问底,等到自己有一定的基础了,有时间了再研究一下.抱着研究的态度感觉会更好一点.其实大部分目前的 开发者都是经过了一段时间的培训,在培训的过程中,课程速度特别快,有时候我们必须要“不拘小节”,掌握培训中的主流知识才是明智之举.如果你正在

JAVA面试整理之——JAVA基础

1.     HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化. 在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.HashMap由链表+数组组成,他的底层结构是一个数组,而数组的元素是一个单向链表.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低.而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,

黑马程序员——Java基础-数组

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概念 数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中. 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素 格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组. 2. int[] arr=new []{5,6,8,3,4} int[] arr={5,6,8,3,4} 数组中常见问题: 1.数组角标越界

一天一个Java基础——数组

一天一个变成了几天一个,最近接受的新东西太多.太快,有好多需要blog的但没有时间,这些基础知识应该是要深挖并好好研究的,不应该每次都草草了事,只看个皮毛. 数组: JVM将数组存储在一个称为堆(heap)的内存区域中,堆用于动态内存分配,在堆中内存块可以按随意的顺序分配和释放 1.int[] a; ——表示声明一个数组(也可写为 int a[];) 声明一个数组变量时并不在内存中给数组分配任何空间,只是创建一个对数组的引用的存储位置 如果变量不包含对数组的引用,那么这个变量的值为null 通过