1 顺序结构
2 分组结构
2.1 if语句
2.1.1语法形式1
if(布尔表达式) {
//条件满足时执行代码
}
public static void main (String[] args) {
int num = 10;
if (num % 2 == 0) {
System.out.println("num 是偶数");
}
else {
System.out.println("num是奇数");
}
}
2.1.2语法形式2
if(布尔表达式) {
//条件满足时执行代码
}else{
//条件满足时执行代码
}
public static void main (String[] args) {
int num = 10;
if (num > 0) {
System.out.println("num 是正数");
}else if (num < 0){
System.out.println("num 是负数");
}else {
System.out.println("num是0");
}
}
2.1.3语法形式3
if(布尔表达式) {
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件满足时执行代码
}
①错误写法if(5<=a<=10)
正确写法if(a<=a&&a<=10)
/*
判断是不是闰年
100的倍数+400的倍数
不是100的倍数 +4的倍数
*/
public static void main (String[] args) {
int year = 2000;
if (year % 100 == 0) {
if (year % 400 == 0) {
System.out.println("是闰年");
}else {
System.out.println("不是闰年");
}
}else {
if (year % 4 == 0) {
System.out.println("是闰年");
}else {
System.out.println("不是闰年");
}
}
}
2.2 switch语句
switch(参数) {
case 内容1 : {
内容满足时执行语句;
break;
}
case 内容1 : {
内容满足时执行语句;
break;}
…
default : {
内容都不满足时执行语句;
break;
}
}
public static void main (String[] args) {
int day = 1;
switch(day) {
case 1:{
System.out.println("星期一");
break;
}
case 2:{
System.out.println("星期二");
break;
}
case 3:{
System.out.println("星期三");
break;
}
case 4:{
System.out.println("星期四");
break;
}
case 5:{
System.out.println("星期五");
break;
}
case 6:{
System.out.println("星期六");
break;
}
default:{
System.out.println("星期日");
break;
}
}
}
①switch参数的类型:整数/枚举/字符/字符串;不能做switch参数的类型:long,float,double,boolean
②break尽量不要省略
3循环结构
3.1 while 循环
while(条件) {
循环语句;}
while条件里的执行结果只能式布尔类型
//1!+2!+3!+4!+5!
public static void main (String[] args) {
int num = 1;
int sum = 0;
while (num <= 5) {
int factorResult = 1;
int tmp = 1;
while (tmp <= num) {
factorResult *= tmp;//阶乘
tmp ++;
}
sum += factorResult;//求和
num ++;
}
System.out.println("sum = " + sum);
}
3.2 break
//找到 100 - 200 中第一个 3 的倍数
public static void main (String[] args) {
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了3的倍数,为:" + num);
break;
}
num++;
}
}
break让循环提前结束.
3.3 continue
//找到 100 - 200 中第一个 3 的倍数
public static void main (String[] args) {
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num ++;
continue;
}
System.out.println("找到了3的倍数,为:" + num);
num++;
}
}
break可以用到switch和循环中,continue只能用到循环中
3.4for循环
for(表达式1;表达式2;表达式3) {
循环体;
}
①表达式1:用于初始化循环变量
表达式2:循环条件
表达式3:更新循环变量
②执行顺序:第一趟:(a)表达式:只执行一次.初始化
(b)判断表达式2是否为真
©循环体
(d)表达式3
第二趟:(b)判断表达式2是否为真
©循环体
(d)表达式3
1!+2!+3!+4!+5!
//①先用for循环求每个阶乘
public static void main(String[] args){
int i;//阶乘的个数
int ret = 1;//存放阶乘
for(i=1;i<=5;i++){
ret *=i;
System.out.println(ret);
}
}
//②外面再加一层for循环求阶乘的和
public static void main(String[] args){
int j;//求和的个数
int num =0;//存放求和结果
for(j=1;j<=5;j++){
int i;//阶乘的个数
int ret = 1;//存放阶乘
for(i=1;i<=j;i++){ //将5改成j,求一个阶乘加一次
ret *=i;
}
num+=ret;}
System.out.println(num);
}
// 1!+2!+3!+4!+5!
public static void main16(String[] args){
int n =1;
int sum = 0;
while (n <= 5) {
int i =1;
int num =1;
while (i <= n) {
num *= i;
i++;
}
sum += num;
n ++;
}
System.out.println(sum);
}
// 1!+2!+3!+4!+5!
public static void main15 (String[] args) {
int a = 1;
int result = 0;
while (a <= 5) {
int i = 1;
int ret = 1;
while(i <= a) {
ret *= i;
i++;
}
result +=ret;
a ++;
}
System.out.println("result = " + result);
}
3.5 do while
do{
循环语句
}(while循环条件)
先执行一次循环语句再执行循环条件
练习题
①猜字游戏
//猜一个随机数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//从键盘输入
Random random = new Random();
int randNum = random.nextInt(100);//输入1-100之间的随机数,左闭右开
// System.out.println(randNum);
scan.close();//关闭调用
while (true) {
System.out.println("请输入你要猜的数字:");
int num = scan.nextInt();
if (num < randNum) {
System.out.println("你输入的数字小了");
} else if (num == randNum) {
System.out.println("你输入的数字对了");
break;
} else {
System.out.println("你输入的数字大了");
}
}
}
②判断一个数是不是素数
//判断一个数是不是素数
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for(int i = 2; i < n ;i++){
if(n % i == 0){
System.out.println(n+ "不是素数!");
break;
}
}
}
//判断一个数是不是素数2
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for (int i = 2; i <= (int) Math.sqrt(n); i++) {
if (n % i == 0) {
System.out.println(n + "不是素数");
}
}
}
//找到1-100之间的素数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
//输入n然后判断n是不是素数
for (int i = 1; i <= n; i++) {
int j = 2;
for (; j <= (int) Math.sqrt(i); j++) {
if (i % j == 0) {
//System.out.println(n + "不是素数");
break;
}
}
if (j > (int) Math.sqrt(i)) {
System.out.println(i + "是素数");
}
}
}
③输出乘法口诀
//输出乘法口诀表
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
//int x = i * j;
System.out.println(i + "*" + j + "=" + i * j + " ");
}
System.out.println();
}
}
④求两个数的最大公约数
a=24,b=18
第一步c=a(24)%b(18)=6
第二步a=b(第一步除数18) b=c(第一步余数6) 重复c=a%b
重复第二步直至余数等于0的余数就是a和b的最大公约数
//输出两个数的最大公约数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int c = 0;
while(a%b != 0){
c = a%b;
a = b;
b = c;
}
System.out.println(c);
}
输入数字的时候注意要敲回车键两行输入
⑤计算1/1+1/2-1/3+1/4…1/100
//1/1+1/2-1/3+1/4....1/100
public static void main28(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
double sum = 0;
int flg = -1;
for (int i = 1 ;i <= n; i++){
sum = sum + 1.0/i * flg;
flg = -flg;
}
System.out.println(sum);
}
⑥1-100之间会含有多少个9
//1-100之间会含有多少个9
//如果想找一个十进制数每一位是几,只需/10或者%10
//如果想找一个二进制数每一位是几,只需/2或者%2
public static void main29(String[] args) {
int count = 0;
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for (int i = 1;i <=n; i++){
if (i %10 ==9){//个位数是9
count ++;
}else if ( i / 10 == 9){//十位数是9
count ++;
}
}
System.out.println(count);
}
//整数二进制1的个数①
public static void main1(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int count = 0;
for (int i = 0; i < 32; i++) {
if(((n>>i)&1)==1){
count++;
}
}
System.out.println(count);
}
//整数二进制1的个数②
public static void main2(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int count = 0;
while(n!= 0){
n= n&(n-1);
count++;
}
System.out.println(count);
}