第2章 Java 主方法中的分支结构

前言

本章目标是通过学习能够在 Java 的主方法中编写分支结构程序,涉及的 Java 编程基本概念包括:分支语句 if 、if-else、if-else if-else、switch 和 break 语句, 关系运算符、逻辑运算符和表达式,三目运算符 ? : 等。你准备好了吗?

第一关:求三个数中最大者


public class Test1{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //声明整型变量 a , b ,c 获取控制台的输入。
        int a = input.nextInt();
        int b = input.nextInt();
        int c = input.nextInt();
        int max = 0;
		max = a;
		if(max<b)max=b;
		if(max<c)max = c;
        System.out.println("最大值为:" + max);
    }
}
  • 咳咳,不得不说哈,马宁老师还是对新手还是很友好的哈,不能说我水文章哈,我是按题目来的。emmmmm

第二关:按升序输出三个数

  • 本关任务:给定三个数,将三个数从小到大排序后,再输出这三个数。
public class Test2{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 声明整型变量 x , y ,z 获取控制台的输入
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        int z = scanner.nextInt();
        
        // 声明整型变量 temp ,用于变量值的临时存储
        int temp = 0;
		if(x>y){temp=x;x=y;y=temp;}
		if(x>z){temp=x;x=z;z=temp;}
		if(y>z){temp=y;y=z;z=temp;}
  
        System.out.println("从小到大排列:" + x + " " + y + " " + z);
    }
}
  • 还记得以前刚刚接触c语言的时候,老师管这个叫做 吞墨水 算法,啊哈哈哈哈哈哈哈,说起来还是有点恶心的,还是不和你们说了,嘿嘿,下一题下一题。

第三关:偶数判断

  • 本关任务:输入两个整数,判断其是否同为偶数。
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 声明整型变量 x , y 获取控制台的输入
        int x = scanner.nextInt();
        int y = scanner.nextInt();

		if(x%2==0&&y%2==0){
			System.out.println("两个数同为偶数!");
		}else{
			System.out.println("两个数至少有一个数为奇数!");
		}
    }
}
  • 咳咳,说实话,我真有种在水文章的感觉了,emmm

第四关:判断一个五位数是不是回文数

  • 。。。。。。
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 声明 int 类型的变量 num ,用来获取控制台输入
        int num = scanner.nextInt();
        
		 if(num%10==num/10000&&(num/10%10)==(num/1000%10)){
			 System.out.print("回文数");
		 }else{
			 System.out.print("不是回文数");
		 }
		 
    }
}
  • 写着写着,我忽然觉得真的没必要了,我想跳着来,但是,这是不对的,再简单也是基础,没有基础,就没有未来,坚持,写完。。。。(光明正大,理直气壮的水文章)

第五关:条件表达式之成绩判断

  • 咳咳,三目运算符来了,你准备好了吗?
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double score = scanner.nextDouble();
        
		// 声明 int 类型变量 temp 用来保存学生成绩是否合格的结果(1 或者 0)
		int temp;
        temp = score<60 ? 0 : 1;
		String result = temp == 1 ? "合格":"不合格";  
        System.out.println("该学生成绩判定为:" +result );
    }
}
  • 有一百金币和一百经验呢,可以了,香的。嗯嗯

第六关:字符类型的判断

  • 本关任务:输入单个字符,判断该字符的类型(判断输入字符是大写字母、小写字母、数字还是其他字符)。
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 声明 char 类型的变量 a 用来获取控制台输入
        char a = scanner.next().charAt(0);
		int b = a;
        if(b>=65&&b<=90){
			System.out.print("该字符是大写字母");
		}else if(b>=97&&b<=122){
			System.out.print("该字符是小写字母");
		}else if(b>=48&&b<=57){
			System.out.print("该字符是数字");
		}else{
			System.out.print("该字符是其他字符");
		}
    }
}
  • 个人觉得,这个还是有必要去记一下的,毕竟这个大小写字母还有数字的ASCII码以后是经常要用到的。

第七关:判断当月有多少天

  • 本关任务:根据给定的年份和月份,获取该月份的天数。
  • 提示:在求二月份的天数时,需要判断年份是否是闰年。闰年的条件是,年份是否能够被 400 整除或者年份能够被 4 整除但是不能被 100 整除。
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        int month = scanner.nextInt();
        int day = 0;
		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)day=31;
		if(month==4||month==6||month==9||month==11)day=30;
		
		if(month==2){
			if(year%400==0||(year%4==0&&year%100!=0))day=29;
			else day=28;
		}
        System.out.print(year + "年" + month + "月有" + day + "天");
    }
}
  • 别的不管,但是这个闰年的判断方式,必须记下来,反正关于日期就要来这个。
  • 划重点哈,好兄弟们。

第九关:switch之百分制成绩转换GPA成绩

  • 掌握: 如何使用 switch 语句。
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 声明 char 类型的变量 score 用来获取控制台输入的成绩
        char score = scanner.next().charAt(0);
	
		switch(score){
			case 'A':System.out.println("百分制分数段为90分以上");break;
			case 'B':System.out.println("百分制分数段为80-89分");break;
			case 'C':System.out.println("百分制分数段为70-79分");break;
			case 'D':System.out.println("百分制分数段为60-69分");break;
			case 'E':System.out.println("百分制分数段为60分以下");break;
		}
    }
}
  • 开关语句还是要学学的,记得字符要加两个小单引号哦,不然就变变量了。

第十关:if嵌套

  • 给定一个整数 a,判断其是否是自然数同时又是偶数。
import java.util.Scanner;
public class ApplicationTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 声明 int 类型的变量 a 用来获取控制台输入
        int a = scanner.nextInt();
		if(a>=0){
			if(a%2==0){
				System.out.println("该数既是自然数又是偶数");
			}else{
				System.out.println("该数为自然数,但不是偶数");
			}
		}else{
			System.out.println("该数不是自然数");
		}
}

第十一关:一元二次方程求解

  • 本关任务:变量a、b、c分别为方程ax^2+bx+c=0中a、b、c的值,求解该一元二次方程的值,将该值四舍五入后保留两位小数后输出。
import java.util.Scanner;

public class Equation {
    public static void main(String[] args) {
    	
    	Scanner reader = new Scanner(System.in);        
    	double a = reader.nextDouble();
    	double b = reader.nextDouble();
    	double c = reader.nextDouble();

		double p = b*b - 4*a*c;
		if(p>0){
			System.out.println("该方程有两个根");
			double f1 = (-b+Math.sqrt(p))/(2.0*a);
			double f2 = (-b-Math.sqrt(p))/(2.0*a);
			System.out.print("x1 = " + String.format("%.2f", f1) + ",x2 = "+ String.format("%.2f", f2));
		}else if(p==0) {
			System.out.println("该方程只有一个根");
			double x = (-b+Math.sqrt(p))/(2.0*a);
			System.out.print("x = " + String.format("%.2f", x));
		}else {
			System.out.print("该方程无解");
		}
    }
}
  • 这公式套的可还行,啊哈哈哈哈哈哈哈。(狗头)

第十二关:物流运费计算

  • 货物的运输费用与距离和重量有关,距离 S 越远,每公里的运费越低。总运输费用 Exp 的计算公式为:Exp=P×W×S×(1-d) ,公式中 P 为每公里每吨货物的基本运费、W 为货物重量(T)、S 为运输距离(km)、d 为折扣。折扣率与距离有关
import java.util.Scanner;
public class Logistics {
    public static void main(String[] args) {
    	
    	Scanner reader = new Scanner(System.in);        
    	double p = reader.nextDouble();     // 表示每公里每吨货物的基本运费
    	double w = reader.nextDouble();     // 表示货物重量
    	double s = reader.nextDouble();     // 运输距离
    	
    	double exp=0;
    	if(s>0&&s<250) {
    		exp = p *w*s;
    		System.out.format("%.2f",exp);
    	}else if(s>=250&&s<500) {
    		exp = p *w*s *(1-0.02);
    		System.out.format("%.2f",exp);
    	}else if(s>=500&&s<1000) {
    		exp = p *w*s *(1-0.05);
    		System.out.format("%.2f",exp);
    	}else {
    		exp = p *w*s *(1-0.08);
    		System.out.format("%.2f",exp);
    	}
    }
}

  • emmm,本来想下一章的,刚刚想走的时候,有个声音就在哪里说,你就是不会写,你在逃避,靠,就我这脾气能忍,非写完不可。

emmmm第二章就到这里了,不难的,新手福利。

改革尚未成功,同志仍需努力!!!
  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值