java打印等腰三角形_初识java java基础 打印各种星型图形 源代码(三)

今天给大家带来的是初级Java基础部分的知识:包括初识Java变量常量数据类型运算符各种选择结构循环结构数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细,值得收藏(๑•̀ㅂ•́)و✧!!!

  另附有各种案例的源代码(可以直接用O(∩_∩)O~)!!!仔细看完它,扎实的基础不再是空谈,万丈高楼平地起,当有了扎实的基础知识,后面学习面向对象以及项目的开发时,压力就减少了很多,所以基础知识不能被轻易的忽略!!!

五、数组(重难点)

为什么需要使用数组:

当有多个数值的时候.需要定义多个变量,较为麻烦,使用数组的话只需要定义一个变量直接开辟一串空间

什么是数组:

数组是一个变量,存储相同数据类型的一组数据

数组和变量的对比:

变量:声明一个变量就是在内存中开辟一个合适大小的空间

数组:声明一个数组就是在内存中开辟一连串的连续空间

数组基本要素:

标识符

数组的名称,用于区分不同的数组

数组元素

向数组中存放的数据

元素下标

对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问

元素类型

数组元素的数据类型

注意:

声明一个变量就是在内存空间划出一块合适的空间

声明一个数组就是在内存空间划出一串连续的空间

数组长度和类型一旦定义不会改变

数组中的所有元素必须属于相同的数据类型

如何使用数组:

1、声明数组

数组类型 数组名 [];

数组类型[] 数组名; //常用写法

int[] a;

int a[];

String[] name;

2、分配空间(告诉计算机分配几个连续的空间)

数组类型[] 数组名 = new 数据类型[大小];

a=new int[5];

3、赋值(向分配的格子里放数据)

数组名[元素下标] =要赋的值;

a[0]=8;

赋值:

一、边声明边赋值:赋值的时候给了几个值,数组的长度就是多少

数组类型[] 数组名 = {x ; y ; z};

int[ ] score = {89, 79, 76};

数组类型[] 数组名 = {x ; y ; z};

int[ ] score = new int[ ]{89, 79, 76};

二、动态的从键盘录入信息并赋值(需要先定义数组长度)

Scanner input = new Scanner(System.in);for(int i = 0; i < 30; i ++){     score[i] = input.nextInt();}

4、处理数据

a[0]=a[0]*10;

案例:

//计算5位学生的平均分: int [ ] score = {60, 80, 90, 70, 85}; double avg; avg = (score[0] + score[1] + score[2] + score[3] + score[4])/5;   但是如果像上面写法的话还是会有弊端的,如:学生的个数有变动,那我们的循环次数和求平均分的时候除以的数都需要修改,我们有一个方法避免修改多处动态的获取数组的长度。  score.length

5、常见错误 

编译出错:没写明数组的大小:int [] score= new int[];

编译出错:数组下标越界:int [] score= new int[2];

    score[0]=11;
    score[1]=11;
     score[2]=11; //下标越界了

编译出错:数组的声明和赋值在多行:

    int [] score;
    score={11,22,33,21};

6.、Arrays类

返回值类型方法名称说明booleanequals(array1,array2)比较array1和array2两个数组是否相等 sort(array)对数组array的元素进行升序排列StringtoString(array)将一个数组array转换成一个字符串 fill(array,val)把数组array所有元素都赋值为val原数组什么类型复制的新数组也是什么类型copyOf(array,length)把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致intbinarySearch(array, val)查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)

案例:
@Test    public void test05(){        int[] array1 ={12,21,13};        int[] array2 ={12,21,13};        int[] array3 ={12,21,13,24};        //int binarySearch(array, val)      查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)        Arrays.sort(array3);        int i =Arrays.binarySearch(array3,13);        System.out.println(i);        //copyOf(array,length)      把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致        /*int array4[] =Arrays.copyOf(array3,6);        System.out.println(Arrays.toString(array4));*/                    /*//void fill(array,val)    把数组array所有元素都赋值为val        Arrays.fill (array3,22);        System.out.println(Arrays.toString(array3));                        //sort(array)        对数组array的元素进行升序排列        //String toString(array)    将一个数组array转换成一个字符串        Arrays.sort(array3);        System.out.println(Arrays.toString(array3));                     // boolean equals(array1,array2);        比较 array1 和 array2 是否相等        boolean a=Arrays.equals(array1,array2);        boolean b=Arrays.equals(array1,array3);        System.out.println(a+","+b);*/    }

7、多维数组

为什么学习多维数组:如遇5个班各5名学生的信息

概念:从内存角度看只有一-维数组,java是支持多维数据的但是二维以上的数组很少使用,只要用二维数组

二维数组:其实是数组的数组

语法:

 [ ][ ]  数Ä名;  或者   数Ä名 [ ][ ];int [ ][ ] scores; //定义二维数组scores=new int[5][50]; //分配内存空间  或者int [ ][ ] scores = new int[5][50]; 常见问题定义二维数组时,要定义最大维数:int [ ][ ] scores = new int[5][]; 后面的中括号是可以省略的int [ ][ ] scores = new int[][]; 不能省略前面的或者都省略二维数组实际上是一个一维数组,它的每个元素又是一个一维数组 赋值int[][] scores=new int[3][5];  score[0][0]=90; score[2][3]=70; 方法一:      int[][] scores=new int[][]{ { 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 }}; 方法二:      int scores[][] = {{ 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 } }; 

六、equals

最后再补充一点关于equals 和 == 的区别哈!!!

== 和 equals 的区别是?

==

既可以比较数值类型,也可以比较引用数据类型。当比较的是数值类型的时候比较的是值比较的是引用数据类型的是后,比较的就是地址值

equals

如果没有对equals方法进行重写的时候,比较的方式和==是一样的,如果重写的则按照重写的方式进行比较

在使用equals 的时候我们将肯定有值的变量写在前面,避免空指针异常地出现

案例:

@Test    public void test2(){        String i =null;//String 的默认值  为空        if (i.equals("")){            System.out.println("合格");        }        System.out.println("程序结束");    }//此时运行会报错@Test    public void test2(){        String i =null;        if ("".equals(i)){            System.out.println("合格");        }        System.out.println("程序结束");    }//换位后运行正常

七、循环结构进阶

1、为什么使用二重循环:

重复做的事使用循环那如计算3个班级各5名学生的成绩平均分就需要两个循环

2、什么是二重循环:

简单来说,就是循环里面套一个循环

3、方式:

语法:while的双重循环while(循环条件1) {  //循环操作1     while(循环条件2) {    //循环操作2 }} do { //循环操作1    do {   //循环操作2 }while(循环条件1);}while(循环条件2); for(循环条件1) { //循环操作1     for(循环条件2) {      //循环操作2 }} while(循环条件1) {  //循环操作1      for(循环条件2) {         //循环操作2    }}  特点:外层循环一次,内层循环一遍 

4、如何使用二重循环:

案例1:

//计算三个班级的四个学生的成绩平均分  Scanner sc = new Scanner(System.in);   double score=0;   double sum=0;   for(int i=0;i<3;i++){ //循环的是班级     System.out.println("请输入第 "+(i+1)+"个班级的学生成绩:");     sum=0;      for(int j=0;j<4;j++){   //循环的是班级的每个学生        System.out.println("请输入第 "+(j+1)+"个学生的成绩:");        score=sc.nextDouble();        sum+=score;     }     System.out.println("第 "+(i+1)+"个班级学生的总成绩是:"+sum);     System.out.println("第 "+(i+1)+"个班级学生的平均分是:"+sum/4);  }

:案例2(进阶):

1.打印各种图形(矩形、直角三角形、倒直角三角形、等腰三角形、平行四边形、菱形、数字菱形、空心菱形) 打印四边形的星星
1 提示:外层循环控制行数,内层循环控制列数2 //打印矩形的星星3    for(int i=1;i<=5;i++){4     for(int j=1;j<=5;j++){5    System.out.print("*");6     }7    System.out.println();  8    }
打印直角三角形的图案
 1 //打印直角三角形 2  Scanner sc = new Scanner(System.in); 3  System.out.println("请输入三角形的行数:"); 4    int num=sc.nextInt(); 5    for(int i=1;i<=num;i++){ 6      for(int j=1;j<=(2*i-1);j++){ 7      System.out.print("*"); 8     } 9      System.out.println();10    }
打印倒直角三角形
 1 //打印直角三角形 2  Scanner sc = new Scanner(System.in); 3  System.out.println("请输入三角形的行数:"); 4      int num=sc.nextInt(); 5      for(int i=1;i<=num;i++){ 6        for(int j=1;j<=(num+1-i);j++){ 7  System.out.print("*"); 8  } 9  System.out.println();10  }
打印等腰三角形(如下图效果)
 1 //打印等腰三角形 2  Scanner sc = new Scanner(System.in); 3  System.out.print("请输入您要打印的行数:"); 4    int num=sc.nextInt(); 5    for(int i=1;i<=num;i++){ 6     for(int j=1;j<=num-i;j++){ 7  System.out.print(" "); 8  } 9     for(int k=1;k<=(2*i-1);k++){10  System.out.print("*");11  }12  System.out.println();13  }

打印平行四边形(如下图效果)

 1 //输出平行四边形 2         for(int i = 0;i<5;i++){ 3             //循环输出空格 4             for(int j=0;j<5-i-1;j++){ 5                 System.out.print(" "); 6             } 7             //循环输出* 8             for(int k = 0;k<=5;k++){ 9                 System.out.print("*");10             }11             System.out.println();12         }
打印菱形
 1 //输出菱形 2         //先输出等腰三角形 3         for(int i = 1;i<=5;i++){ 4             //循环输出空格 5             for(int j=5-i;j>0;j--){ 6                 System.out.print(" "); 7             } 8             //循环输出* 9             for(int k = 0;k<2*i-1;k++){10                 System.out.print("*");11             }12             System.out.println();13         }14         //再输出一个4行的倒三角形15         for(int i = 1;i<=4;i++){16             //循环输出空格17             for(int j=1;j<=i;j++){18                 System.out.print(" ");19             }20             //循环输出*21             for(int k = 0;k<2*(5-i)-1;k++){   // 2*(5-i)-1   9-2i22                 System.out.print("*");23             }24             System.out.println();25         }
打印数字菱形
 1 //输出数字菱形 2                 //先输出等腰三角形 3                 for(int i = 1;i<=5;i++){ 4                     //循环输出空格 5                     for(int j=5-i;j>0;j--){ 6                         System.out.print(" "); 7                     } 8                     //循环输出* 9                     for(int k = 0;k<2*i-1;k++){10                         System.out.print((5-i));11                     }12                     System.out.println();13                 }14                 //再输出一个4行的倒三角形15                 for(int i = 1;i<=4;i++){16                     //循环输出空格17                     for(int j=1;j<=i;j++){18                         System.out.print(" ");19                     }20                     //循环输出*21                     for(int k = 0;k<2*(5-i)-1;k++){   // 2*(5-i)-1   9-2i22                         System.out.print(i);23                     }24                     System.out.println();25                 }
打印空心菱形
===========================================================
2.//若有3个班级各4名学员参赛,计算每个班级参赛学员平均分,统计成绩大于80分学员数   Scanner sc = new Scanner(System.in);   double avg=0;   double sum=0;   double score=0;   int num=0;   for(int i=1;i<=3;i++){   System.out.println("请输入第 "+i+"个班级的成绩:");   sum=0;    for(int j=1;j<=4;j++){    System.out.print("请输入第 "+j+"个同学的成绩:");    score=sc.nextDouble();    sum+=score;     if(score<80){       continue;    }    num++;   }   System.out.println("第 "+i+"个班的平均分是:"+sum/4);  }  System.out.println("80分以上的学院个数为:"+num);===========================================================3.循环和break相结合的联系Scanner sc = new Scanner(System.in);   String answer="";   int num=0;   for(int i=1;i<=5;i++){    System.out.println("欢迎光临第 "+i+"家店");        for(int j=1;j<=3;j++){     System.out.print("要离开么(y/n): ");     answer=sc.next();        if(answer.equals("y")){         System.out.println("离店结账");         break;        }        num++;    }   }   System.out.println("一共买了 "+num+"件衣服");
===========================================================

 4. 在数组中添加、修改、删除数据 

5.冒泡排序、选择排序、插入排序的代码和对比
 1 一共是比较了数组长度的-1轮,每一轮比较的次数都是比上一次少一次  2 //打印冒泡 3    int [] arr={21,77,23,32,1,99}; 4   System.out.println("排序之前:"); 5    for(int i=0;iarr[j+1]){13          int temp=arr[j];14          arr[j]=arr[j+1];15          arr[j+1]=temp;16       }17     }18   }   19  System.out.println("排序之后:");20    for(int i=0;i
 1 //插入排序 2         int[] arr = {3,42,54,2,56,7,76};  3         for(int i =1;i=0;j--){  //j就是被比较的数:42,j>=0是从i向前比较,直到数组的下标为0. 7                 //判断temp是否大于被比较的数42 8                 if(arr[j] > temp){ 9                     //如果temp小于被比较的数42,就要交换位置,即把arr[j]的值赋值给后面一位arr[j+1].此时不用担心后面的数被覆盖后找不到,10                      //因为已经赋值给了temp11                     arr[j+1] = arr[j];  //赋值之后返回单for循环,j--,此时j相当于i-212                 }else{13                     //如果temp大于别比较的数42,不需要交换位置 .此时break后,j不用--,即j的值没变14                     break;15                 }16             }17             18             //接着判断是否发生了交换。如果没有交换,此时arr[j+1] == temp ; 如果交换了,j也减了1,此时arr[j+1] != temp19             if(arr[j+1] != temp){20                 //说明发生了交换。则把temp赋值给arr[j+1]21                 arr[j+1] = temp;22             }23         }24         //遍历输出数组,检测25         for(int i:arr){26             System.out.print(i+" ");27         }
 1 //选择排序 2         //int[] arr = {1,3,42,54,2,56,7,76,4}; 3         int index = 0; 4         for(int i = 0;iarr[j]){ 8                     index = j; 9                 }10             } 11             if(index != i){12                 arr[index] = arr[index]+arr[i];13                 arr[i] = arr[index] - arr[i];14                 arr[index] = arr[index] - arr[i];15             }16         }17         for(int i:arr){18             System.out.print(i+" ");19         }
5.冒泡排序、选择排序、插入排序的代码和对比
 1 一共是比较了数组长度的-1轮,每一轮比较的次数都是比上一次少一次  2 //打印冒泡 3    int [] arr={21,77,23,32,1,99}; 4   System.out.println("排序之前:"); 5    for(int i=0;iarr[j+1]){13          int temp=arr[j];14          arr[j]=arr[j+1];15          arr[j+1]=temp;16       }17     }18   }   19  System.out.println("排序之后:");20    for(int i=0;i
 1 //插入排序 2         int[] arr = {3,42,54,2,56,7,76};  3         for(int i =1;i=0;j--){  //j就是被比较的数:42,j>=0是从i向前比较,直到数组的下标为0. 7                 //判断temp是否大于被比较的数42 8                 if(arr[j] > temp){ 9                     //如果temp小于被比较的数42,就要交换位置,即把arr[j]的值赋值给后面一位arr[j+1].此时不用担心后面的数被覆盖后找不到,10                      //因为已经赋值给了temp11                     arr[j+1] = arr[j];  //赋值之后返回单for循环,j--,此时j相当于i-212                 }else{13                     //如果temp大于别比较的数42,不需要交换位置 .此时break后,j不用--,即j的值没变14                     break;15                 }16             }17             18             //接着判断是否发生了交换。如果没有交换,此时arr[j+1] == temp ; 如果交换了,j也减了1,此时arr[j+1] != temp19             if(arr[j+1] != temp){20                 //说明发生了交换。则把temp赋值给arr[j+1]21                 arr[j+1] = temp;22             }23         }24         //遍历输出数组,检测25         for(int i:arr){26             System.out.print(i+" ");27         }
 1 //选择排序 2         //int[] arr = {1,3,42,54,2,56,7,76,4}; 3         int index = 0; 4         for(int i = 0;iarr[j]){ 8                     index = j; 9                 }10             } 11             if(index != i){12                 arr[index] = arr[index]+arr[i];13                 arr[i] = arr[index] - arr[i];14                 arr[index] = arr[index] - arr[i];15             }16         }17         for(int i:arr){18             System.out.print(i+" ");19         }

  至此,Java基础语法部分大致完成,下面该是Java的重难点:面向对象!!!下次会给大家带来更为详细的关于面向对象的博客,期待小伙伴们的收藏、支持和评论,加油!!!

  喜欢前端、后端java开发的可以加+qun:609565759,有详细视频、资料、教程,文档,值得拥有!!!希望可以一起努力,加油ヾ(◍°∇°◍)ノ゙!!!

  B站有上传的更多项目视频,从Java基础到面向对象、Java高级API,以及SSM等框架的视频,地址:https://www.bilibili.com/video/BV15a411w7Jh

833bed39c9dca277073c0ed122eabf63.png
3d05a76b1af5e9607fecb5736852e1dd.png
d352ee08e46161773c5a7d1c9d2172b2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值