顺序结构
程序执行顺序
分支结构
if - else
结构:二选一
if(表达式){// boolean 类型
执行语句; }
else {//可选
执行语句; }
注意: 对于条件表达式;
1.若多个条件表达式,之间是互斥关系(没有交集的关系)
判断执行语句声明在上,下都无关紧要;
2.有交集,要根据实际情况,考虑清楚将哪个结构声明在上面
3.包含关系:通常将范围小的声明在范围大的上面,否则范围小的无法被执行输出;
4.if-else 结构可嵌套
5.if或else下只有一条语句可不加花括号
6.就近原则
swatch - case
结构:
swatch(表达式){
case 常量1:
执行语句1;
//break; 可选
case 常量2:
执行语句2;
//break;
........
default://可选
执行语句 n;
//break;
}
说明:
- 根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配,进入执行相应语句,执行完后,继续向下执行,直至遇到break或default或程序结束;
- break 可选,作用:跳出switch -case 结构
- switch - case 结构中只能是 6种数据类型之一:byte 、short、char、int、枚举类型(jdk5.0新增)、string(jdk7.0新增);
- case 之后只能声明常量,不能声明范围
- default 相当于if-else中的else
- 若 switch-case 结构中多个case 语句相同,可以合并
- 可以用switch-case 结构都可用 if - else ,反之不成立
循环结构
四要素
① 初始化条件
②循环条件
③循环体
④迭代条件
for 循环
结构:
for(①;②;④){
③;
}
while 循环
结构:
①;
while(②){
③;
④;
}
do-while循环
结构:
①;
do{
③;
④;
} while(②);//至少会执行一次循环体
循环嵌套:
1.内层循环遍历一遍,只相当于外层循环执行循环体一次
2.外层循环控制行数,内层循环控制列数;
代码:
//请输入年月日,输出该天是当年的第几天?
import java.util.Scanner;
public class DaysNumber {
public static void main(String[] args) {
int number=0;
// TODO Auto-generated method stub
Scanner reader=new Scanner(System.in);
System.out.println("请输入year:");
int year=reader.nextInt();
System.out.println("请输入month:");
int month=reader.nextInt();
System.out.println("请输入day:");
int day=reader.nextInt();
switch(month) {//月份一旦进入case,当前case下面的语句都会执行
case 12:
number+=30;
case 11:
number+=31;
case 10:
number+=30;
case 9:
number+=31;
case 8:
number+=31;
case 7:
number+=30;
case 6:
number+=31;
case 5:
number+=30;
case 4:
number+=31;
case 3:
if(year%4==0&&year%100!=0||year%400==0) {//判断是否是闰年
number+=29;
}else {
number+=28;
}
case 2:
number+=31;
case 1:
number+=day;
}
System.out.println(year+"年"+month+"月"+day+"是"+year+"的第"+number+"天");//输出
}
}
package demo;
//输出
/* *
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
*/
public class Ling {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<6;i++) {
for(int j=1;j<6-i;j++) {
System.out.print(" ");
}
for(int k=1;k<i+1;k++) {
System.out.print("* ");
}
System.out.println();
}
for(int i=1;i<5;i++) {
for(int j=1;j<=i;j++) {
System.out.print(" ");
}
for(int k=1;k<6-i;k++) {
System.out.print("* ");
}
System.out.println();
}
}
}
//求100以内的质数;
//最小的质数为2
public class PrimeNumber {
public static void main(String[] args) {
boolean flag=true;//标识i%j是否为0,一旦为0,修改其值
for(int i=2;i<=100;i++) {//遍历1-100
flag=true; //重置flag
//for(int j=2;j<i;j++) {
for(int j=2;j<=Math.sqrt(i);j++) {//优化二:对本身质数也有效
if(i%j==0) {
flag=false;//若取余为0 改变flag的值
break;// 优化一:只对非质数 有效
//
}
}
if(flag==true) {
System.out.print(i+" ");
}
}
}
}
//从键盘输入若干数,分别统计输入的正数个数和负数的个数,输入0结束
import java.util.Scanner;//导包
public class Zero {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count=0;
int single=0;
Scanner reader=new Scanner(System.in);//实例化
while(true) {//不限制循环次数
System.out.print("请输入一个数:");
int num= reader.nextInt();//读取
if(num>0) {
count++;
}
else if(num==0) {
break; //跳出循环
}
else {
single++;//计输入的负数的个数
}
}
System.out.println("正数有"+count);//输出
System.out.println("负数有"+single);
}
}
//从键盘输入两个数,输出最大公约数和最小公倍数;
import java.util.Scanner;//导包
public class Numb {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);//实例化
System.out.println("请输入第一个正整数:");//提示语句
int m=reader.nextInt();
System.out.println("请输入第二个正整数:");
int n= reader.nextInt();
int min=(m>n)?n:m;//三元运算符求较小值最大公约数小于两个数中的较小数
int num;
for(int i=min;i<=min;i--) {//从大到小遍历
if(m%i==0&&n%i==0){
System.out.print("最大公约数为:");
System.out.println(i);
break;
}
}
int max=(m>n)?m:n;
for(int i=max;i<=m*n;i++){//最小公倍数范围
if(i%m==0&&i%n==0) {
System.out.println("最小公倍数为:"+i);
break;
}
}
}
}
//九九乘法表;
public class Muti {
public static void main(String[] args) {
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
System.out.print(j+"*"+i+"="+j*i+" ");
}
System.out.println();
}
}
}