注:所有题目均来自洛谷
问题1、A+B
输入两个整数 a, b,输出它们的和。
题目分析:这个就是很基础入门了,没什么难的。
代码如下:
import java.io.*;
import java.util.*;
public class Problem1 {
public static void main(String[] args) {
Scanner abin = new Scanner(System.in);
System.out.println("请输入a与b的值:");
int a = abin.nextInt();
int b = abin.nextInt();
System.out.println("a+b=" +(a+b));
}
}
问题2、苹果采购
现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?
输入格式
输入两个不超过 10^9 正整数,分别表示每人分到的数量和同学的人数。
输出格式
一个整数,表示答案。保证输入和答案都在int范围内的非负整数。
问题分析:题目很长,但是只需要a * b。
代码如下:
import java.io.*;
import java.util.*;
public class Problem2 {
public static void main(String[] args) {
Scanner abin = new Scanner(System.in);
System.out.println("请输入同学数量与每人应分得苹果数量");
int a = abin.nextInt();
int b = abin.nextInt();
System.out.println("需要采购的苹果的数量为" +a*b);
}
}
问题3、字母转换
输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。
问题分析:这里使用toLowerCase() 与 toUpperCase()函数实现转换。
import java.io.*;
import java.util.*;
public class Problem3 {
public static void main(String[] args) {
Scanner ch = new Scanner(System.in);
System.out.println("请输入字母或单词");
String str1 = ch.next();
String str2 = ch.next();
//把str1输入转换大小写
String str3 = str1.toLowerCase();
String str4 = str1.toUpperCase();
//把str2输入转换大小写
String str5 = str2.toLowerCase();
String str6 = str2.toUpperCase();
System.out.println("输入字母或单词转换如下" +str3 +str4 +str5 +str6);
}
}
运行结果:
请输入字母或单词
apple blue
输入字母或单词转换如下appleAPPLEblueBLUE
问题4、数字反转
输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如 123.4,要求把这个数字翻转过来,变成 4.321 并输出。
输入格式
一行一个浮点数
输出格式
一行一个浮点数
问题分析:可以使用charAt()函数。charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。输出结果好奇怪。
代码如下:
import java.util.Scanner;
public class Problem4 {
public static void main(String[] args) {
Scanner num = new Scanner(System.in);
System.out.println("请输入浮点数");
String a = num.next();
for(int i = a.length()-1; i >= 0 ; i--) {
System.out.println("数字反转结果为:" +(a.charAt(i)));
}
}
}
运行结果:
请输入浮点数
567.8
数字反转结果为:8
数字反转结果为:.
数字反转结果为:7
数字反转结果为:6
数字反转结果为:5
问题5、分肥宅水
现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。输入一个实数 t 和一个整数 n,使用空格隔开。输出两个数字表示答案,使用换行隔开。
0 ≤ t ≤ 10000且不超过3位小数,1 ≤ n ≤ 1000
问题分析:杯子数量2n,每名同学t / 2n ml肥宅水,肥宅水不知道什么牌子。
java输出保留小数点位数,选一个简单的方法:String.format(“%.位数f” , 变量)
代码如下:
import java.util.Scanner;
public class Problem5 {
public static void main(String[] args) {
Scanner banji = new Scanner(System.in);
System.out.println("请输入同学数与可乐毫升数");
int n = banji.nextInt();
double t = banji.nextDouble();
System.out.println("需要杯子数" +2*n);
System.out.println("每名同学分得可乐" +String.format("%.3f",t/(2*n)));//保留三位小数
}
}
运行结果:
请输入同学数与可乐毫升数
20 6968.8888
需要杯子数40
每名同学分得可乐174.222
问题6、小鱼游泳
伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。
这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自己从a时b分一直游泳到当天的c时d分,请你帮小鱼计算一下,它这天一共游了多少时间呢?
小鱼游的好辛苦呀,你可不要算错了哦。
输入格式
一行内输入 4 个整数,分别表示 a, b, c, d。
输出格式
一行内输出 2 个整数 e 和 f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f 应该小于60。
问题分析:注意24小时制就行了。
代码如下:
import java.util.*;
public class Problem6 {
public static void main(String[] args) {
Scanner time = new Scanner(System.in);
System.out.println("请输入小鱼出发时间与结束时间");
int a = time.nextInt();
int b = time.nextInt();
int c = time.nextInt();
int d = time.nextInt();
int x = c - a;
int y = d - b;
if(y < 0) {
x--;
y+=60;
}
System.out.println("小鱼一共游了"+x+"时"+y+"分钟");
}
}
运行结果:
请输入小鱼出发时间与结束时间
9 45 16 57
小鱼一共游了7时12分钟
问题7、上学迟到
yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有s(s≤10000) 米,而 yyy 可以以v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM
的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。
输入格式
两个正整数 s,v,意思已经在题目中给定。
输出格式
hh:mm 表示最晚离开家的时间(时:分,必须输出两位,不足两位前面补0)
问题分析:10000m一分钟。。这里需要用到java中的Calendar,大致内容如下:
这里只需要输出 小时:分钟,所以格式化的格式为:HH:mm
代码如下:
- Calendar.YEAR ——年份 。
- Calendar.MONTH ——月份 。
- Calendar.DATE ——日期 。
- Calendar.DAY_OF_MONTH ——日期,和上面的字段意义相同 。
- Calendar.HOUR ——12小时制的小时 。
- Calendar.HOUR_OF_DAY ——24小时制的小时 。
- Calendar.MINUTE ——分钟 。
- Calendar.SECOND ——秒 。
- Calendar.DAY_OF_WEEK ——星期几。
之后再使用 SimpleDateFormat 进行时间格式化再输出。
- yyyy:年。
- MM:月。
- dd:日 。
- hh:1~12 小时制 (1-12)。
- HH:24 小时制 (0-23)。
- mm:分。
- ss:秒。
- S:毫秒。
- E:星期几。
- D:一年中的第几天。
- F:一月中的第几个星期(会把这个月总共过的天数除以 7)。
- w:一年中的第几个星期。
- W:一月中的第几星期(会根据实际情况来算)。
- a:上下午标识。
- k:和HH差不多,表示一天 24 小时制 (1-24)。
- K:和hh差不多,表示一天 12 小时制 (0-11)。
- z:表示时区。
代码如下:import java.util.Calendar; import java.util.Scanner; import java.text.*; public class Problem7 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入总路程与yyy的速度"); int s = scanner.nextInt();//路程 int y = scanner.nextInt();//速度 Calendar date = Calendar.getInstance(); date.set(2022, Calendar.MARCH, 15, 21, 5, 0); //设置时间格式public final void set(int year, int month, int date, int hourOfDay, int minute,int second) date.add(Calendar.MINUTE, -10);//丢垃圾所用时间 date.add(Calendar.MINUTE, s % y == 0 ? -(s / y) : -(s / y) - 1);//如果路程不能整除速度则需要多花一分钟走 SimpleDateFormat format = new SimpleDateFormat("最晚出门时间"+"yyyy:MM:dd:HH:mm"); System.out.println(format.format(date.getTime())); } } 运行结果: 请输入总路程与yyy的速度 5000 8 最晚出门时间2022:03:15:10:30
2022/3/15 21:16暂时到这里。