题库练习2(随机数去重排序、分割字符串、进制转换)
1. 随机数去重排序
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。
1.1 分析
去重:Set
排序:TreeSet
多组数据,要使用sc.hasNext()
import java.util.Scanner;
import java.util.TreeSet;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n=sc.nextInt();int i=0;TreeSet<Integer> set=new TreeSet<Integer>();while(i<n){set.add(sc.nextInt());i++;}while(!set.isEmpty())System.out.println(set.pollFirst());}}
}
2.分割字符串
- 连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
- 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
2.1 分析
分为三种情况:
- 长度小于8;
- 后面直接append 0 即可
- 等于8
- 直接输出
- 大于8
- 分割
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);String str1=sc.nextLine();String str2=sc.nextLine();getResult(str1);getResult(str2);}public static void getResult(String str){if(str==null)return;int len=str.length();StringBuffer sb=new StringBuffer(str);if(len<8){int i=len;while(i<8){sb.append("0");i++;}System.out.println(sb.toString());}else if(len==8)System.out.println(str);else{List<String> list=new ArrayList<String>();int k=0;for(;k+8<=len;k+=8){list.add(str.substring(k,k+8));}if(k!=len){StringBuffer sb2=new StringBuffer(str.substring(k));int num=8-(len-k)%8;for(k=0;k<num;k++)sb2.append("0");list.add(sb2.toString());}for(int j=0;j<list.size();j++)System.out.println(list.get(j));}}
}
注:
1.substring(int beginindex) sustring(int beginindex,int endindex)
- beginIndex -- 起始索引(包括), 索引从 0 开始。
- endIndex -- 结束索引(不包括)。
import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);String str1=sc.nextLine();String str2=sc.nextLine();getResult(str1);getResult(str2);}public static void getResult(String str){while(str.length()>=8){System.out.println(str.substring(0,8));str=str.substring(8);}if(str.length()<8&&str.length()>0){str+="00000000";System.out.println(str.substring(0,8));}}
}
3. 进制转换
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNextLine()){String str=sc.nextLine();getResult(str);}}public static void getResult(String str){char[] chs=str.toCharArray();int len=chs.length-1;int result=0;int num=0;for(int i=len;i>1;i--){switch (chs[i]){case 'A':case 'B':case 'C':case 'D':case 'E':case 'F':num=chs[i]-'7';result+=num*((int)Math.pow(16,(len-i)));break;case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':num=chs[i]-'0';result+=num*((int)Math.pow(16,(len-i)));break;}}System.out.println(result);}
}
注:
1.switch用法
package codeAnal;public class SwitchDemo {public static void main(String[] args) {stringTest();breakTest();defautTest();}/** default不是必须的,也可以不写* 输出:case two*/private static void defautTest() {char ch = 'A';switch (ch) {case 'B':System.out.println("case one");break;case 'A':System.out.println("case two");break;case 'C':System.out.println("case three");break;}}/** case语句中少写了break,编译不会报错* 但是会一直执行之后所有case条件下的语句,并不再进行判断,直到default语句* 下面的代码输出: case two* case three*/private static void breakTest() {char ch = 'A';switch (ch) {case 'B':System.out.println("case one");case 'A':System.out.println("case two");case 'C':System.out.println("case three");default:break;}}/** switch用于判断String类型* 输出:It's OK!*/private static void stringTest() {String string = new String("hello");switch (string) {case "hello":System.out.println("It's OK!");break;default:System.out.println("ERROR!");break;}}
}
2.ASCII
A的ASCII码是65,a的ASCII码是97。
题库练习2(随机数去重排序、分割字符串、进制转换)相关推荐
- 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 每日一题(进制转换)
前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...
- poj1220:高精度进制转换模板题
今天撸3708 一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...
- 不怂Java进制转换(洛谷P1143题题解,Java语言描述)
感慨 Java也能这么好使啊,不容易-- --进阶的JFarmer 题目要求 P1143题目链接 分析 进制转换其实也还好,但既然用了Java,那就得扬眉吐气一次,体会体会利用API轻松秒题的感受,机 ...
- Hutool 数字工具-NumberUtil使用(加减乘除,保留小数,格式化数字,是否为数字,随机数,整数列表,阶乘,平方根,最大公约数和最小公倍数,进制转换,比较大小,去除多余的0)
数字工具针对数学运算做工具性封装. 1 加减乘除 四种运算都会将double转为BigDecimal后计算,解决float和double类型无法进行精确计算的问题.这些方法常用于商业计算. //针对数 ...
- linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)
[编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...
- 菜菜的刷题日记 | 蓝桥杯 — 十六进制转八进制(纯手撕版)附进制转换笔记
系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子 万万没想到啊,回老家过年断更的几天之后,我会因为无聊在除夕这天做了会儿题,然后写篇题解. 文章目录 [题目] [我的代码] ...
- c语言生成16进制随机数,C语言实战篇——模拟ATM取款机,最强大脑小游戏,进制转换,产生不同的随机数...
2019.11.24 模拟ATM取款机 如图为登录界面 银行.png #include int main(){ printf("----------------------------\n& ...
- 小单刷题笔记之天平称重 (巧用进制)
题目: 用天平称重时,我们希望尽可能少的砝码组合称出尽可能多的重量,如果有无限个砝码,但它们的重量是1,3,9,27..等三的指数幂,神奇的是用它们组合可以称出任意的重量.本题要求实现,用户给出重量, ...
最新文章
- 面向软件工程师的卡尔曼滤波器
- redis api java 正则_java代码怎么正则删除redis的数据
- 环境/---Liunx环境安装
- 物联网和前端技术,两者相辅相成并且互相促进 —— 阿里云 MVP 黄强专访
- OpenCV:实现灰度直方图和单通道直方图拉伸
- Teams Bot开发系列:Teams的Activity处理
- windows下面怎么github ssh 公钥,然后克隆项目
- C++ STL 初步介绍01
- go语言打包html,Go语言-打包静态文件
- cnn神经网络_神经网络之CNN和RNN
- 现代的 “Hello, World”,可不仅仅是几行代码而已
- 二级计算机环境,计算机环境变量_二级计算机关于变量的问题
- sql分页查询与offset的使用
- 把特斯拉送上火星的程序员,马斯克!
- 【人工智能】图灵测试
- KO88冲销内部订单结算的操作参考
- 麻雀算法SSA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码,直接复制粘贴!
- C语言入门多种求和a+b
- 报童问题 (The Newsvendor Problem)
- Ajax注册表单用户名实时验证