JAVA算法练习之顺序结构

注:所有题目均来自洛谷

问题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暂时到这里。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java算法和数据结构指的是在使用Java编程语言时,用于解决问题和组织数据的方法和技术。 数据结构是计算机存储和组织数据的方式,它由相互之间存在特定关系的数据元素的集合组成。精心选择的数据结构可以提高程序的运行效率和存储效率。常用的数据结构包括数组、链表、栈、队列、树和图等。Java提供了一些内置的数据结构类和接口,例如ArrayList、LinkedList和HashMap等,可以方便地应用于各种问题的解决。 算法则是为了更有效地处理数据,提高数据运算效率而研究的方法和技术。算法是在数据的逻辑结构上定义的操作序列,用于解决特定的问题。在Java中,可以使用各种算法来实现排序、搜索、图算法等。Java提供了一些内置的算法类和接口,例如Collections类中的sort方法可以用于对集合进行排序,以及java.util包中的各种排序和搜索算法。 因此,Java算法和数据结构是指在使用Java编程语言时,利用适当的数据结构以及选择和实现高效的算法来解决问题和处理数据的方法和技术。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java 数据结构算法](https://blog.csdn.net/yuan_dai_ma/article/details/113996341)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值