流程控制语句:
顺序结构 程序从上往下执行
选择(判断)结构 有选择的执行
if条件
switch语句
循环结构 重复执行某段代码块多次
有三种循环
for:
for(初始化表达式;条件表达式;增量表达式) {
循环体;
}
while:
while(条件表达式) {
循环体;
}
升级版:
初始化表达式;
while(条件表达式) {
循环体;
增量表达式;
}
do...while:
do {
循环体;
}while(条件表达式);
升级
初始化表达式;
do {
循环体;
增量表达式;
}while(条件表达式);
区别:
for,while循环都是先执行判断,如果判断为true,再执行循环体。
do...while是先执行循环体,再判断,最后如果为true,会继续执行循环体。至少执行一次循环体。
我们到底用谁呢?
一般情况下,常用for和while。
如果是一个范围,用for居多。
如果仅仅只是一个判断,用while循环。
如果增量在变化后,在外面不再被使用,就使用for循环,效率高一些。
for语句 当明确了范围时,用for循环,并且定义的变量不在循环外参与运算
while语句 只能做出判断,在什么时候结束循环时,可以用while循环语句
do...while语句
附加知识:
键盘录入的使用步骤:
导包:
import java.util.Scanner;
创建对象
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
案例:
/*
用while循环求1-100之间的奇数和
分析:
第一步:定义一个求奇数和的变量
第二部:初始化变量,
第三部:while循环判断
第四步:
*/
class GetSum2
{
public static void main(String[] args)
{
int i=1,sum=0;
while(i<=100){
if(i%2!=0){
sum+=i;
}
i++;
}
System.out.println("1-100的奇数和为:"+sum);
}
}
求阶乘:
import java.util.Scanner;
class JieCheng
{
public static void main(String[] args)
{
int a=getSc();
getSum(a);
}
public static int getSc(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数:");
int a=sc.nextInt();
return a;
}
public static void getSum(int a){
int sum=1;
for(int i=2;i<=a;i++){
sum*=i;
}
System.out.println(a+"的阶乘是:"+sum);
}
}
求100-1000之间的水仙花数
class ShuiXian{
public static void main(String[] args){
for(int i=100;i<1000;i++){
int g=i%10;
int s=i/10%10;
int b=i/100%10;
if(g*g*g+s*s*s+b*b*b==i){
System.out.println(i);
}
}
}
}
/*
我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。
请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
*/
class GetMountHeight{
public static void main(String[] args){
float h=0.01f;
int count=1;
int ct=2;
while(ct*h<8848){
//System.out.println(count);
ct*=2;
count++;
}
System.out.println("需要叠加"+count+"次,可以达到珠穆朗玛峰的高度!");
getHeight();
}
public static void getHeight(){
int count=0;
for(float h=0.01f;h<=8848;h*=2){
count++;
}
System.out.println("需要叠加"+count+"次,可以达到珠穆朗玛峰的高度!");
}
}
/*
153=1^3+5^3+3^3
先定义三个变量;
int a,b,c;
定义for循环求出100-999之间的数。
for(int i=100;i<=999;i++)
分解这个数字,求出百,十,个,位数字
a=i/100%10;
b=i/10%10;
c=i%10;
*/
class GetNumPrint
{
public static void main(String[] args)
{
int num=0;
for(int i=10000;i<100000;i++){
int ge=i%10;
int shi=i/10%10;
int bai=i/100%10;
int qian=i/1000%10;
int wan=i/10000%10;
if(ge==wan&&shi==qian&&ge+shi+qian+wan==bai){
System.out.println(i);
num++;
}
}
System.out.println("满足条件的数共有:"+num);
}
}
函数:
定义:完成特定功能的代码块
格式:
修饰符 返回值类型 函数名(数据类型 形式参数1,数据类型 形式参数2,...) {
函数体;
return 返回值;
}
修饰符:public static
返回值类型:是功能的结果值的数据类型。如果没有结果,这里是void。
函数名:为了方便函数的调用,我们给其起了一个名字。
参数:
实际参数 实际参与运算的值
形式参数 用于接收实际参数的变量
函数体:就是完成功能的代码块。
return 返回值:返回值就是功能的结果,由return把结果返回给调用者。
哪里调用,返回到哪里。
函数的特点:
只有被调用才执行、函数之间是平级关系,不要在一个函数中定义一个函数、提高代码复用性
写函数的两个明确:
返回值类型、参数列表(类型及个数)
函数的调用
void类型:只能单独调用
非void型:单独调用无意义、可以输出调用、可以赋值调用(常用方式)
函数重载
函数名相同,参数列表不同(个数不同,对应的类型不同)
跟返回值无关