顺序结构
按照代码书写的顺序一行一行执行
分支结构
if语句
语法格式1
if(布尔表达式){
//语句
}
语法格式2
if(布尔表达式){
//语句1
}else{
//语句2
}
语法格式3
if(布尔表达式1){
//语句1
}else if(布尔表达式2){
//语句2
}else{
//语句3
}
例题
判断奇偶
public class J831_1 {
public static void main(String[] args) {
int x = 3;
if(x%2==0){
System.out.println(x+"是偶数");
}else{
System.out.println(x+"是奇数");
}
}
}
判断数的正负
public class J831_2 {
public static void main(String[] args) {
int x = 0;
if(x==0){
System.out.println(x+"等于0");
}else if(x>0){
System.out.println(x+"是正数");
}else{
System.out.println(x+"是负数");
}
}
}
判断是否是闰年
import java.util.Scanner;//类似C语言中的导入头文件,java中叫导入包
public class J831_3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();//读取整数用nextInt
if((year%4==0&&year%100!=0)||(year%400==0)){//能被4整除且不能被100整除,或者能被400整除
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
//方法二
int year3 = 2000;
if(year3 % 100 == 0){
if(year3 % 400 ==0){
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}else{
if(year3 % 4 == 0){
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}
}
}
注意
代码风格,分号问题(不要乱加分号),垂悬else问题(else跟距离最近的if匹配),加大括号
switch语句
基本语法
public class J831_4 {
public static void main(String[] args) {
int a = 1;
switch (a) {
case 1: {
System.out.println(1);
break;
}
case 2: {
System.out.println(2);
break;
}
case 3: {
System.out.println(3);
break;
}
default: {
System.out.println("输入错误");
break;
}
}
}
}
注意
多个case后的常量值不可以重复
switch的括号内只能是以下类型的表达式:
基本类型:byte,char,short,int
引用类型:String常量串,枚举类型
不支持float,double,long,boolean,主要来说是语法上不支持
break不要遗漏,switch不能表达复杂的条件,支持嵌套,但是很丑
循环结构
while循环
基本语法结构
public class J831_5 {
public static void main(String[] args) {
int a = 1;
while( a<=10){
System.out.println(a);
a++;
}
}
}
相关习题
public class J831_5 {
public static void main(String[] args) {
//打印1—10的数字
int a = 1;//循环的初始条件
while( a<=10){//判断条件
System.out.println(a);
a++;//步进
}
//计算1-100的和,奇数的和,偶数的和
int n = 1;//偶数n从2开始
int sum = 0;
while( n <= 100){
sum += n;
n++;//奇数偶数n+=2;
}
System.out.println(sum);
//计算5的阶乘
int x = 1;
int mul = 1;
while( x <= 5){
mul = mul*x;
x++;
}
System.out.println(mul);
//计算1!+2!+3!+4!+5!
//方法一
int num = 1;
sum = 0;
mul = 1;
while(num <= 5){
mul *= num;
sum += mul;
num++;
}
System.out.println(sum);
//方法二,循环嵌套
int i = 1;
sum = 0;
while(i <= 5){
n = 1;
int ret = 1;
while(n <= i){
ret *= n;
n++;
}
sum += ret;
i++;
}
System.out.println(sum);
}
}
注意
和if类似,注意加{},注意不要多写分号
break语句
让循环结束
例题
public class J831_6 {
public static void main(String[] args) {
//找到100-200中第一个3的倍数
int n = 100;
while(n <= 200){
if(n % 3 == 0){
System.out.println(n);
break;//结束距离最近的循环结构
}
n++;
}
}
}
continue语句
continue的功能是跳过这次循环,立即进入下次循环
例题
//找到100-200中所有3的倍数
n = 100;
int count = 0;
while(n <= 200){
if(n % 3 == 0){
System.out.println(n);
count ++;
}
n++;
}
System.out.println(count);
//使用continue语句
while(n <= 200){
if(n % 3 != 0){
n++;//注意这个地方也要n++,否则也会进入死循环
continue;
}
System.out.println(n);
n++;
count ++;
}
System.out.println(count);
for循环
基本语法与C语言类似
例题
public class J901_1 {
public static void main(String[] args) {
//打印1-10的数字
int i = 0;
for(i = 0;i <= 10;i ++){
System.out.println(i);
}
//计算1-100的和
i = 1;
int sum = 0;
for(i = 1;i <= 100;i ++){
sum += i;
}
System.out.println(sum);
//计算5的阶乘
i = 0;
int mul = 1;
for(i = 1;i <= 5;i ++){
mul *= i;
}
System.out.println(mul);
//计算1!+2!+3!+4!+5!
int ret = 0;
mul = 1;
for(i = 1;i < 6; i ++){
mul *= i;
ret += mul;
}
System.out.println(ret);
}
}
do while循环
先执行再判断
注意
do while循环最后分号不要忘记
不推荐使用
输出
public class J901_2 {
public static void main(String[] args) {
System.out.println("输出切换行");
System.out.print("输出不换行");
System.out.printf("%s\n","输出格式化");//和C语言基本一致
}
}
格式化字符串
输入
使用Scanner读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0