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 分析

分为三种情况:

  1. 长度小于8;

    1. 后面直接append  0 即可
  2. 等于8
    1. 直接输出
  3. 大于8
    1. 分割
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(随机数去重排序、分割字符串、进制转换)相关推荐

  1. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  2. 每日一题(进制转换)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

  3. poj1220:高精度进制转换模板题

    今天撸3708  一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...

  4. 不怂Java进制转换(洛谷P1143题题解,Java语言描述)

    感慨 Java也能这么好使啊,不容易-- --进阶的JFarmer 题目要求 P1143题目链接 分析 进制转换其实也还好,但既然用了Java,那就得扬眉吐气一次,体会体会利用API轻松秒题的感受,机 ...

  5. Hutool 数字工具-NumberUtil使用(加减乘除,保留小数,格式化数字,是否为数字,随机数,整数列表,阶乘,平方根,最大公约数和最小公倍数,进制转换,比较大小,去除多余的0)

    数字工具针对数学运算做工具性封装. 1 加减乘除 四种运算都会将double转为BigDecimal后计算,解决float和double类型无法进行精确计算的问题.这些方法常用于商业计算. //针对数 ...

  6. linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)

    [编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...

  7. 菜菜的刷题日记 | 蓝桥杯 — 十六进制转八进制(纯手撕版)附进制转换笔记

    系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子 万万没想到啊,回老家过年断更的几天之后,我会因为无聊在除夕这天做了会儿题,然后写篇题解. 文章目录 [题目] [我的代码] ...

  8. c语言生成16进制随机数,C语言实战篇——模拟ATM取款机,最强大脑小游戏,进制转换,产生不同的随机数...

    2019.11.24 模拟ATM取款机 如图为登录界面 银行.png #include int main(){ printf("----------------------------\n& ...

  9. 小单刷题笔记之天平称重 (巧用进制)

    题目: 用天平称重时,我们希望尽可能少的砝码组合称出尽可能多的重量,如果有无限个砝码,但它们的重量是1,3,9,27..等三的指数幂,神奇的是用它们组合可以称出任意的重量.本题要求实现,用户给出重量, ...

最新文章

  1. 面向软件工程师的卡尔曼滤波器
  2. redis api java 正则_java代码怎么正则删除redis的数据
  3. 环境/---Liunx环境安装
  4. 物联网和前端技术,两者相辅相成并且互相促进 —— 阿里云 MVP 黄强专访
  5. OpenCV:实现灰度直方图和单通道直方图拉伸
  6. Teams Bot开发系列:Teams的Activity处理
  7. windows下面怎么github ssh 公钥,然后克隆项目
  8. C++ STL 初步介绍01
  9. go语言打包html,Go语言-打包静态文件
  10. cnn神经网络_神经网络之CNN和RNN
  11. 现代的 “Hello, World”,可不仅仅是几行代码而已
  12. 二级计算机环境,计算机环境变量_二级计算机关于变量的问题
  13. sql分页查询与offset的使用
  14. 把特斯拉送上火星的程序员,马斯克!
  15. 【人工智能】图灵测试
  16. KO88冲销内部订单结算的操作参考
  17. 麻雀算法SSA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码,直接复制粘贴!
  18. C语言入门多种求和a+b
  19. 报童问题 (The Newsvendor Problem)
  20. Ajax注册表单用户名实时验证

热门文章

  1. NIOS2随笔——uCOS-II实时操作系统
  2. 《软件工程(第4版?修订版)》—第1章1.2节软件工程取得了哪些进展
  3. 推荐一个SAM文件中flag含义解释工具--转载
  4. eBay再度问路中国
  5. 写linux程序测试吞吐量,Linux下测试磁盘性能(IO、吞吐量)
  6. sass学习记录及vue实践
  7. sts(eclipse)安装svn插件
  8. 查看win10剩余激活时间
  9. linux安装minikube(Ubuntu/deepin)
  10. Spark分区与并行度