Java基础总结3
1.循环的嵌套
public class FirstDemo{
//入口方法
/**
循环的嵌套
在循环体内部去嵌套一个循环,一般情况下,嵌套不要超过三层
语法:
while(表达式){
while(表达式){
//循环体;
}
//循环体;
}
for(;;){
//内部循环
for(;;){
//循环体;
}
}
循环控制语句;
break;//可用于switch循环语句,break后跳出当前循环
continue;//跳过本次循环,继续下次循环;
return; //返回到当前方法调用处,可以结束所有循环;
*/
public static void main(String[]args){
/**
1.
*****
*****
*****
*****
2.
*****
*****
*****
*****
3.
*
***
*****
*******
*/
//双重for循环的使用
for(int i=0;i<3;i++){//外层循环执行3次
System.out.println(i+"王者不可阻挡!");
//内层循环
for(int j=0;j<4;j++){//内层循环执行4次
System.out.println(j+" 买橘子");
}
System.out.println(i+" 陈独秀 ");
}
//1.打印第一个图形
//外层循环控制行数
for(int row=0;row<4;row++){
//内层循环控制列数
for(int col=0;col<5;col++){
//打印小星星
System.out.print("*");
}
//换行操作
System.out.println();
}
//2.打印第二个图形
//外层循环控制行数
for(int row=0;row<4;row++){
//内层循环控制列数
//列数=空格数量+星星数量;
//空格的数量=总行数-当前行数下标-1;
//星星的数量=5;
for(int col=0;col<5+4-row-1;col++){
//判断空格
if(col<4-row-1){
//打印空格
System.out.print(" ");
}else{
//打印小星星
System.out.print("*");
}
}
//换行操作
System.out.println();
}
//3.打印第三个图形
//外层循环控制行数
for(int row=0;row<4;row++){
//内层循环控制列数
for(int col=0;col<2*row+1;col++){
//打印小星星
System.out.print("*");
}
//换行操作
System.out.println();
}
//循环控制语句:break;
for(int i=0;i<10;i++){
if(i==3){
break;//跳出当前循环体,结束循环
}
System.out.print(i+"\t");
}
System.out.println();
//循环控制语句:continue;
for(int i=0;i<10;i++){
if(i==3){
continue;//结束本次循环,继续下次循环
}
System.out.print(i+"\t");
}
System.out.println();
//return
for(int i=0;i<10;i++){
if(i==3){
return;
}
System.out.print(i+"return\t");
}
System.out.println("我知道");
}
}
输出结果:
练习题
/**
1.
*
***
*****
*******
2.
1*1=1
1*2=2 2*2=4
...
九九乘法表
3.求2-100内所有的素数
素数:除了1和本身能被除尽外,其他正整数都不能被除尽
*/
import java.util.*;
public class Test1{
//入口方法
public static void main(String[]args){
//1.打印等腰三角形
//初始化键盘录入对象
Scanner in=new Scanner(System.in);
System.out.println("1.等腰三角形");
System.out.print("请输入行数:");
int n=in.nextInt();
//外层循环控制行数
for(int row=0;row<n;row++){
//内层循环控制列数
//列数=空格数+星星数;
//空格数=总行数-当前行数下标-1
//星星数=当前行数下标*2+1
//col=n-row-1+row*2+1=n+row
for(int col=0;col<n+row;col++){
if(col<n-row-1){
System.out.print(" ");
}else{
System.out.print("*");
}
}
//换行操作
System.out.println();
}
//2.打印九九乘法表
//外层循环控制行数
int product=1;
System.out.println("2.九九乘法表");
for(int row=1;row<=9;row++){
//内层循环控制列数
for(int col=1;col<=row;col++){
//计算
product=col*row;
//输出
System.out.print(col+"*"+row+"="+product+"\t");
}
//换行操作
System.out.println();
}
//3.求2-100内所有的素数
//外层循环控制行数
System.out.println("3.素数");
System.out.print("请输入一个整数:");
n=in.nextInt();
System.out.println("2-"+n+"的素数如下所示:");
for(int row=2;row<=n;row++){
//内层循环控制列数
for(int col=2;col<=row;col++){
if(row%col==0){
if(row!=col){
break;
}else{
System.out.print(row+"\t");
}
}
}
}
}
}
输出结果:
2.方法
import java.util.*;
public class SecondDemo{
/**
方法:执行一段代码的集合
如何定义方法:
1.确定参与运算的未知参数();
2.确定方法调用时,是否有返回值(返回值类型);
语法:
修饰符 返回值类型 方法名([参数1,参数2,...]){
//方法体;
[return 返回值;]
}
定义方法的方式:
1.有参数 有返回值
2.有参数 无返回值
3.无参数 无返回值
4.无参数 有返回值
*/
//入口方法
public static void main(String[]args){
//求三个数最大数
int a=10,b=2,c=5;
//调用方法 通过方法名 a,b,c 实参
int max=getMax(a,b,c);
System.out.println("最大数是"+max);
outMsg("Hello Java!");
mathAdd();
System.out.println(getPI());
Scanner in=new Scanner(System.in);
System.out.print("请输入三角形的底:");
double bottom=in.nextDouble();
System.out.print("请输入三角形的高:");
double height=in.nextDouble();
double area=getTrinagleArea(bottom,height);
System.out.println("三角形的面积为:"+area);
}
//1.有参数 有返回值
//定义一个方法,求任意三个数的最大数
public static int getMax(int a,int b,int c){
//方法体 a,b,c 形参
int max=a>b?a:b;
max=max>c?max:c;
//返回结果
return max;
}
//2.有参数 无返回值
public static void outMsg(String str){
System.out.println(str);
}
//3.无参数 无返回值
public static void mathAdd(){
System.out.println(10+11);
}
//4.无参数 有返回值
public static double getPI(){
return 3.14159;
}
//练习:求三角形的面积
public static double getTrinagleArea(double bottom,double height){
double area=bottom*height/2;
return area;
}
}
输出结果:
练习题
import java.util.*;
public class Test2{
//方法:打印图形 n-m内的素数
public static void main(String[]args){
Scanner in=new Scanner(System.in);
System.out.println("1.等腰三角形");
System.out.print("请输入行数:");
int n=in.nextInt();
printGraphical(n);
System.out.println("2.素数");
System.out.print("请输入m:");
int m=in.nextInt();
System.out.print("请输入n:");
n=in.nextInt();
System.out.println(m+"-"+n+"的素数如下所示:");
getPrime(m,n);
}
//1.打印图形
public static void printGraphical(int n){
//外层循环控制行数
for(int row=0;row<n;row++){
//内层循环控制列数
//列数=空格数+星星数;
//空格数=总行数-当前行数下标-1
//星星数=当前行数下标*2+1
//col=n-row-1+row*2+1=n+row
for(int col=0;col<n+row;col++){
if(col<n-row-1){
System.out.print(" ");
}else{
System.out.print("*");
}
}
//换行操作
System.out.println();
}
}
//2.找出n-m内的素数
public static void getPrime(int m,int n){
//外层循环控制行数
for(int row=m;row<=n;row++){
//内层循环控制列数
for(int col=2;col<=row;col++){
if(row%col==0){
if(row!=col){
break;
}else{
System.out.print(row+"\t");
}
}
}
}
}
}
输出结果:
3.方法重载
public class ThirdDemo{
/**
方法重载:
1.两同一不同
两同:同类中,方法名相同;
一不同:方法参数列表不同:
1.参数个数 2.参数类型 3.参数顺序;
*/
//入口方法
public static void main(String[]args){
//调用方法
method(90);
method();
method("浪子一秋");
method("浪子一秋",21);
method(21,"Java");
}
//方法重载
public static void method(int a){
System.out.println(a);
}
public static void method(){
System.out.println(333);
}
public static void method(String name){
System.out.println(name);
}
public static void method(String name,int age){
System.out.println("222");
}
public static void method(int age,String like){
System.out.println("111");
}
}
输出结果:
练习题
//方法重载:求面积 周长
public class Test3{
//入口方法
public static void main(String[]args){
double area=getArea(12);
System.out.println("面积为:"+area);
double perimeter=getPerimeter(12);
System.out.println("周长为:"+perimeter);
}
//定义方法求面积
public static double getArea(double bottom,double height){
double area=bottom*height/2;
return area;
}
public static double getArea(double r){
double area=3.14*r*r;
return area;
}
public static int getArea(int l){
int area=l*l;
return area;
}
public static int getArea(int lenght,int width){
int area=lenght*width;
return area;
}
//定义方法求周长
public static double getPerimeter(double edge1,double edge2,double edge3){
double perimeter=edge1+edge2+edge3;
return perimeter;
}
public static double getPerimeter(double r){
double perimeter=2*3.14*r;
return perimeter;
}
public static int getPerimeter(int l){
int perimeter=4*l;
return perimeter;
}
public static int getPerimeter(int lenght,int width){
int perimeter=2*(lenght+width);
return perimeter;
}
}
输出结果:
4.递归方法
public class FourthDemo{
/**
递归方法其实就是一个循环
1.必须有出口
斐波纳契数列,其通项公式为:
F(0)=1,F(1)=1,Fn=F(n-1) +F(n-2)(n>=3,n∈N*),
现在求F(5)的值,怎么做呢?
*/
//1.斐波纳契数列
public static int f(int n){
if(n==0)
return 1;
if(n==1)
return 1;
return f(n-1)+f(n-2);
}
//入口方法
public static void main(String[]args){
//调用方法
int n=f(5);
System.out.println(n);
}
}
输出结果:
练习题
//递归:求n以内的和 阶乘
import java.util.*;
public class Test4{
//入口方法
public static void main(String[]args){
//初始化键盘录入对象
Scanner in=new Scanner(System.in);
System.out.print("请输入n:");
int n=in.nextInt();
int sum=getSum(n);
System.out.println("1-"+n+"的和为:"+sum);
System.out.print("请输入n:");
n=in.nextInt();
int factorial=getFactorial(n);
System.out.println("1-"+n+"的阶乘为:"+factorial);
}
//定义方法求和
public static int getSum(int n){
if(n==1)
return 1;
else
return n+getSum(n-1);
}
//定义方法求阶乘
public static int getFactorial(int n){
if(n==1)
return 1;
else
return n*getFactorial(n-1);
}
}
输出结果:
5.知识框架