Java程序设计——反转字符串 & 找朋友 & 计算int型二进制1的个数 & 情报加密 & 计算日期 & 求近似数 & 输出较小数(练习1)
作为刚刚入门Java的选手,其实C++的功底起到了很大的作用。但是,Java之于C++最大的不同,我个人认为,是其类的多样性。才入门的我,写着老师布置的简单的面对过程的题,如果是C++,可以算是简单了,但是,在Java中,各种类和函数能否熟练掌握以及是否理解其本身的性质,对于能否迅速过渡并且完成老师的任务至关重要。
在C++中,最简单也是最常用的输入输出,变为了一长串的调用。虽然繁琐,但熟能生巧。下面几道题便是这几天的成果。
经过训练,确实可以感觉到一种从陌生到熟练的感觉。也希望对大家有所帮助。
一、反转字符串
【问题描述】写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。
【输入形式】输入N个字符
【输出形式】输出该字符串反转后的字符串
【样例输入】
abcd
【样例输出】
dcba
import java.io.*;
import java.util.Scanner;
public class reverseString {
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
String str = null;
if(scan.hasNextLine()){
str = scan.nextLine();
}
scan.close();
for(int i= str.length();i>=1;i--){
System.out.print(str.substring(i-1,i));
}
}
}
二、找朋友
【问题描述】
两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份湖大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。
首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。
【输入形式】
每个案例第一行两个整数N,M。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)
【输出形式】
每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)
【样例输入】
4 5
2
3
2
1
【样例输出】
1
BeiJu
1
BeiJu
import java.io.*;
import java.util.Scanner;
public class findFriend {
public static void main(String []args){
Scanner N = new Scanner(System.in);
//进行输入
int reader = N.nextInt();//获取读者数
int book = N.nextInt();//获取书的数量
//建立数组
int[] readers = new int[reader];
int[] books = new int[book];
//书所拥有的人的数量初始化
for(int k=0;k<book;k++){
books[k] = 0;
}
//了解每个读者喜欢的书,统计每本书拥有读者个数
for(int i=0;i<reader;i++){
readers[i] = N.nextInt();
for(int k=0;k<book;k++){
if(readers[i]-1 == k){
books[k]++;
}
}
}
//停止对输入的接收
N.close();
//输出潜在读者个数,
//循环中,读者如果找到自己喜爱的书就可以知道书拥有的人数
for(int j=0;j<reader;j++){
for(int k=0;k<book;k++){
if(readers[j]-1 == k){
if(books[k]-1 != 0){
System.out.println(books[k]-1);
}
else{
System.out.println("BeiJu");
}
}
}
}
}
}
三、计算int型二进制1的个数
【问题描述】
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
【输入形式】
输入一个整数int类型
【输出形式】
这个数转换成2进制后,输出1的个数
【样例输入】
5
【样例输出】
2
import java.util.Scanner;
public class countOne {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int num = 0;
if(scan.hasNextInt()){
num = scan.nextInt();
}
scan.close();
int count = 0;
while(true){
if(num==0){
break;
}
else if(num%2==0){
num /= 2;
}
else if(num%2==1){
count++;
num/=2;
}
}
System.out.print(count);
}
}
四、情报加密
【问题描述】
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。
【输入形式】
可能有多组测试数据。每组测试数据的第一行是字符串的数目n,其余n行每行一个字符串,每个字符串长度小于80个字符。
【输出形式】
对于每组数据,输出每行字符串的加密字符串。
【样例输入】
1
Hello! How are you!
【样例输出】
Ifmmp! Ipx bsf zpv!
import java.util.Scanner;
public class infoEncryption {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int num = 0;
String s;
char c;
char ch;
//num输入后会有'\n'的符号,使得nextLine提前读入,这里可以多设置一个,排除干扰
num = scan.nextInt();
scan.nextLine();
String[] str = new String[num];
for(int i=0;i<num;i++){
str[i] = null;
}
if(scan.hasNextLine()){
for(int k=0;k<num;k++){
str[k] = scan.nextLine();
for(int j=0;j<str[k].length();j++){
s = str[k].substring(j, j+1);
c = s.charAt(0);
if(s.equals("z")){
System.out.print("a");
}
else if(s.equals("Z") ){
System.out.print("A");
}
else if((c < 'z' && c >= 'a')||(c < 'Z' && c >= 'A')){
ch = ++c;
System.out.print(ch);
}
else{
System.out.print(c);
}
}
System.out.println();
}
}
scan.close();
}
}
五、计算日期
【问题描述】
给出年分m和一年中的第n天,算出第n天是几月几号。
【输入形式】
输入包括两个整数y,n
【输出形式】
可能有多组测试数据,对于每组数据,按yyyy-mm-dd的格式将输入中对应的日期打印出来。
【样例输入】
2000 3
2000 31
2000 40
2000 60
【样例输出】
2000-01-03
2000-01-31
2000-02-09
2000-02-29
import java.util.Scanner;
public class whatDate {
public static boolean runYear(int year){
//判断是否是闰年,注意,主函数调用,必须为static函数
if(((year%4==0)&&(year%100!=0))||(year%400==0)){
return true;
}
else{
return false;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int year = 0;
int days = 0;
int month = 0;
int[] dayR = {31,29,31,30,31,30,31,31,30,31,30,31};
int[] dayP = {31,28,31,30,31,30,31,31,30,31,30,31};
while(scan.hasNextInt()){
year = scan.nextInt();
days = scan.nextInt();
if(runYear(year)){
for(int i=0;i<12;i++){
if(days<=dayR[i]){
month = i+1;
break;
}
days -= dayR[i];
}
}
else{
for(int i=0;i<12;i++){
if(days<=dayP[i]){
month = i+1;
break;
}
days -= dayP[i];
}
}
if(month<10){
System.out.print(year+"-0"+month);
}
else{
System.out.print(year+"-"+month);
}
if(days<10){
System.out.println("-0"+days);
}
else{
System.out.println("-"+days);
}
}
}
}
六、求近似数
【问题描述】
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
【输入形式】
输入一个正浮点数值
【输出形式】
输出该数值的近似整数值
【样例输入】
5.5
【样例输出】
6
import java.util.Scanner;
public class numRound {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
float f = 0.0f;
if(scan.hasNextFloat()){
f = scan.nextFloat();
}
scan.close();
System.out.print(Math.round(f));
}
}
七、输出较小数
【问题描述】输入n个整数,输出其中最小的k个。
【输入形式】输入说明 1输入两个整数(n k) 2输入一个整数数组
【输出形式】输出一个整数数组
【样例输入】
5 2
1 3 5 7 2
【样例输出】
1 2
import java.util.Scanner;
import java.util.Arrays;
public class outSmall {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n=0; int k=0;
if(scan.hasNextInt()){
n = scan.nextInt();
k = scan.nextInt();
}
int[] num = new int[n];
for(int i=0;i<n;i++){
num[i] = scan.nextInt();
}
scan.close();
Arrays.sort(num);
for(int i=0;i<k;i++){
System.out.print(num[i] + " ");
}
}
}
Java程序设计——反转字符串 & 找朋友 & 计算int型二进制1的个数 & 情报加密 & 计算日期 & 求近似数 & 输出较小数(练习1)的更多相关文章
- java 基础 - 反转字符串
反转字符串 public class Main { public static void main(String[] args) { String newStr= strReverseWithArra ...
- Java案例——反转字符串
/*案例:将用户输入的字符串反转并输出 分析:1.使用Scanner 类获取用户输入的字符串 2.定义一个方法将字符串反着遍历并拼接 3.定义变量接受并输出* */public class Strin ...
- java判断一个字符串是否为数字(整型、int)
引入commons-lang 的jar包 /** * 判断是否是数字类型 * @param str * @return 如果为空返回false 匹配返回true */ public static bo ...
- 《Java程序设计》第五周学习总结
20145224 <Java程序设计>第五周学习总结 教材学习内容总结 第八章异常处理 8.1.1使用try.catch ·教材范例用户连续输入整数,输入0结束后显示输入数的平均值(代码如 ...
- 201621123043 《Java程序设计》第2周学习总结
1.本周学习总结 使用jdk文档查阅函数功能及代码 用switch语句是在每个case中可能在第一行是sc.nextLine;来给回车赋值: 在使用循环的时候要注意循环返回的条件,否则陷入死循环可能会 ...
- 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...
- 20145238 —《Java程序设计》—第5周学习总结
20145238 <Java程序设计>第5周学习总结 教材学习内容总结 第八章异常处理 8.1.1使用try.catch ·教材范例用户连续输入整数,输入0结束后显示输入数的平均值(代码如 ...
- 20145213《Java程序设计》第五周学习总结
20145213<Java程序设计>第五周学习总结 教材学习内容总结 "素衣莫起风尘叹,犹及清明可到家."每每念此,不得不心疼自己.古人清明长假都进城耍了,还担心自己清 ...
- 20155321 2016-2017-2 《Java程序设计》第七周学习总结
20155321 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Date/DateFormat Date是日期类,可以精确到毫秒. 构造方法 Date() ...
随机推荐
- spring-data-neo4j 4.2.4release文档概要
Neo4j是一种开源的NoSQL图数据库,将数据以图(把一个个实体当作节点,连接节点的边表示节点间的关系)的形式保存,Neo4j也支持ACID事务管理.关系型数据库数据访问采用的是ORM(对象关系映射 ...
- Nginx 的简介
1. 什么是 nginx :Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数. 2. 正向代理 ...
- The Preliminary Contest for ICPC Asia Nanchang 2019 E. Magic Master
题目:https://nanti.jisuanke.com/t/41352 思路:约瑟夫环 由题意得第k张牌即求 k 为 第几个 报数为m+1 的单位 用队列模拟即可 #include<bits ...
- Gym - 101987G Secret Code (概率+数学积分)
题意:有A,B,C三个人要见面,每个人在[0,S]随机选择一个时间点作为见面时间,先到的那个人要等下一个人来了之后和他确认信息,然后马上就走. 例如,假如A先到,B其次,C最后到,那么A要等B到了之后 ...
- keep-alive实现返回保留筛选条件及筛选结果
实现页面返回时,保留筛选条件和筛选结果 说明 . keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM 实现 结合router实现部分页面缓存 模板应用 ...
- linux命令详解之ls命令
ls命令概述 ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名.以文件名进行排序及文件名代表的颜色显示.当不加参数时,默认列 ...
- maven项目创建2
添加依赖索引 但是默认是没有索引的,要手动创建索引 依赖范围 debug 配置 运行常见问题 处理办法,JDK重新安装 网络添加依赖网站
- H5+JAVA的文件上传,断点续传
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- poj 3625 (最小生成树算法)
Building Roads Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12203 Accepted: 3448 D ...
- codevs 5929 亲戚x
题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. ...