前言
本章目标是通过学习能够在 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第二章就到这里了,不难的,新手福利。