(1)顺序结构:
(2)选择结构: if 、 if else 、 if else if else if else switch case。
(3)循环结构:for while do...while
练习: 打印
*
**
***
****
*****
for(int i=1;i<=5;i++){//控制行数
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
1
12
123
1234
12345
for(int i=1;i<=5;i++) {
for(int j=1;j<=i;j++) {
System.out.print(j);
}
System.out.println();
}
***** 1 5
**** 2 4
*** 3 3
** 4 2
*
//第一种
for(int i=1;i<=5;i++){//控制行数:
for(int j=1; j<=6-i;j++){//控制列数:
System.out.print("*");
}
System.out.println();
}
//第二种
for(int i=1;i<=5;i++){
for(int j=i;j<=5;j++){
System.out.print("*");
}
System.out.println("");
}
分析: 空格和行的关系 星号和行的关系:
____* 1 4 1
___** 2 3 2
__*** 3 2 3
_**** 4 1 4
*****
结论: 打印的图形: 尖朝上,通常改变内层循环的条件。
尖朝下,通过改变内层循环的变量的初始值,循环条件不变
for(int i=1;i<=5;i++){//控制循环的行“:五行
for(int x=i+1;x<=5; x++ ){//控制空格:
System.out.print(" ");
}
for(int y=1;y<=i;y++){
System.out.print("*");
}
System.out.println();
}
*****
****
***
**
*
for(int i=1;i<=5;i++){//控制循环的行“:五行
for(int y=1;y<=i;y++){
System.out.print(" ");
}
for(int x=i;x<=5; x++ ){//控制空格:
System.out.print("*");
}
System.out.println();
}
* 1 3 1 3
*** 2 2 3 2
***** 3 1 5 1
*******
*****
***
*
for(int i=1;i<=7;i++) {
if(i<=4) {
for(int j=1;j<=4-i;j++)
System.out.print(" ");
for(int j=1;j<=i*2-1;j++)
System.out.print("*");
for(int j=1;j<=4-i;j++)
System.out.print(" ");
}else {
for(int j=1;j<=i-4;j++)
System.out.print(" ");
for(int j=1;j<=(7-i)*2+1;j++)
System.out.print("*");
for(int j=1;j<=i-4;j++)
System.out.print(" ");
}
System.out.println();
}
*
* *
* *
* *
* *
* *
*
for(int i=1;i<=7;i++) {
if(i<=4) {
for(int j=1;j<=4-i;j++)
System.out.print(" ");
if(i!=1)
System.out.print("*");
for(int j=1;j<=i*2-3;j++)
System.out.print(" ");
System.out.print("*");
for(int j=1;j<=4-i;j++)
System.out.print(" ");
}else {
for(int j=1;j<=i-4;j++)
System.out.print(" ");
if(i!=7)
System.out.print("*");
for(int j=1;j<=(7-i)*2-1;j++)
System.out.print(" ");
System.out.print("*");
for(int j=1;j<=i-4;j++)
System.out.print(" ");
}
System.out.println();
}
}
二: 方法:
需求: num* 5+1
1:定义: 完成某一个功能的代码段的集合。给一段代码命名。
然后通过方法的名称来访问该方法。
2:方法的定义语法:
public static void 方法名称([参数列表]){
//定义的方法体:
}
访问权限修饰符 [修饰符] 返回值 方法名称([参数列表]){
...方法体。
}
解释:
public: 访问权限修饰符。 公共的,共有的。
static: 表示静态的。 静态的方法通过类名直接调用。 Math.abs();
void :代表没有返回值。
方法的名称: 自定义,遵循标识符的规则和规范。 从第二个单词的首字母开始,大写。
() 参数列表: 参数列表,需要的时候传递,不需要的时候,不传递。
参数在定义的时候不需要给出具体的值,而是给出具体的类型。参数,是一个形式上的参数,
所以称之为形式参数,简称形参。
定义功能时,如果需要多个参数,那么多个参数之间使用逗号间隔。
方法体: 自定义、
如果方法需要定义成具有返回值的:那么需要在方法当中将计算的结果,通过return关键字返回。
方法的返回值类型,应该定义成和结果相同或者是相兼容的类型。
3:方法的调用:
调用方式:
(1)类名.方法名称("参数");
a:在主方法当中可以通过类名.方法名的方法调用自定义方法。
如果是调用本类的静态方法,类名可以省略。
b:如果自定的方法当中定义了形式参数,那么在调用该方法的时候,需要传递
一个实际的参数,来替代形式参数。 传递的参数是一个实际的值。称之为实参。
c: 调用方法传递实参的时候,传递的实参必须要跟形参的类型相同或者是相兼容。
需求: 定义一个功能: 完成两个数的和
public static void add(int a,int b) {
int sum=a+b;
System.out.println("sum="+sum);
}
定义一个功能: 完成求两个double类型的数的和。
public static void add(double a,double b) {
double sum=a+b;
System.out.println("sum="+sum);
}
定义一个功能: 打印九九乘法表:
public static void Print99() {
int i,j;
for(i=1;i<=9;i++){
System.out.println();
for(j=1;j<=i;j++){
System.out.print(j+"X"+i+"="+i*j+" ");
}
}
}
定义一个功能:求三个数的最小值。
public static int getMin(int a,int b,int c) {
int min=a;
if(min>b)
min=b;
if(min>c)
min=c;
return min;
}
定义一个功能: 求一个数的绝对值。
public static int getAbs(int a) {
a=a>0? a:-a;
return a;
}
定义一个功能: 打印菱形 (传递一个int的数,打印响应的行数 4)
public static void printRhombus(int a) {
// 1 3 5 7 9 11
if(a%2==0) {
a=a+1;
}
for(int i=1;i<=a;i++) {
if(i<=a/2+1) {
for(int j=1;j<=a/2+1-i;j++)
System.out.print(" ");
for(int j=1;j<=i*2-1;j++)
System.out.print("*");
for(int j=1;j<=a/2+1-i;j++)
System.out.print(" ");
}else {
for(int j=1;j<=i-a/2-1;j++)
System.out.print(" ");
for(int j=1;j<=(a-i)*2+1;j++)
System.out.print("*");
for(int j=1;j<=i-a/2-1;j++)
System.out.print(" ");
}
System.out.println();
}
}
定义功能:求三角形的周长和面积。
//求三角形的周长
public static double getLength(double a,double b,double c) {
double l=a+b+c;
return l;
}
//求三角形的面积
public static void printSqur(double a,double b,double c) {
if(a>0&&b>0&&c>0) {
if(a+b>c&&a+c>b&&b+c>a) {
double p=(a+b+c)/2.0;
double s=Math.sqrt(p*(p-a)*(p-c)*(p-b));
System.out.println("三角形的面积为:"+s);
}
else
System.out.println("不能组成一个三角形!");
}
else
System.out.println("请输入正数!");
}
4:方法的优点:
a: 可以将代码进行封装,就可以实现代码的复用。
b: 使代码更加具有模块化。
三:return 关键字:
(1)作用一:用在具有返回值的方法当中,将方法运算的结果,返回。返回结果的类型必须要跟定义的类型相同或者是相兼容。作用二:表示该方法结束。
(2)用在无返回值的方法当中。 表示方法运行到此处结束。 如果不手动添加,在方法的末尾,
系统会自动给添加。 通常不需要手动添加。
三: 方法的重载(面试):
1:定义:方法的重载: 在一个类当中,允许定义同名的方法,但是方法的参数列表不同。 列表不同
表现在参数的个数和参数的类型不同。 这样的方法称之为重载的方法。
要点: 方法名称相同。
参数不同。 个数和类型不同。
和返回值没有关系。
2: 重载方法的调用:
虚拟机会根据传递实参的个数和类型,去匹配最合适最相近的方法调用。
3:判断下列哪些方法构成方法的重载:
void show(int a,char b, double c);
a:void show( int b, char a ,double c);// 不构成, 完全一样。
b:int show(int a,char b, double c) // 不构成。与返回值没有关系。
c:void show( char a, int b. double c); // 构成:参数的类型不同。
d:boolean show(int b,char c);// 构成。参数的列表的个数不同。f
e:void show(double d);//构成
f: void show();//构成
e:double show(int a,char b, double c);// 不构成。
4:什么情况下定义方法的重载?
当方法完成的功能相似或者是相近时, 但是参与运算的参数的个位或者是类型不同时,可以定义
方法的重载。