JavaSE编码试题强化练习5
1.不使用函数实现字符串的翻转
/**
* 1.不使用函数实现字符串的翻转
*/
public class TestStringReverse {
public static void main(String[] args) {
String s1 = "FEDCBA";
System.out.println("翻转前:"+s1);
/**
* 此处需注意用s1接收方法的返回值,不然输出的还是没翻转之前的s1
*/
s1 = reverseI(s1);
System.out.println("方法I翻转后:"+s1);
s1 = reverseII(reverseII(s1));
System.out.println("方法II翻转后:"+s1);
} /**
* 方法I
*/
public static String reverseI(String str){
/**
* 实现思路:将字符串存入一个字符数组中,首尾交换,每交换一次起始位置+1,结束位置-1
* 调用toCharArray()方法,返回一个字符数组,方便通过下标取放字符,最终实现字符串的翻转
*/
char[] ch = str.toCharArray();
/**
* 定义起始和结束位置下标索引号
*/
int start = 0;
int end = ch.length - 1;
char temp;
while (start < end){
temp = ch[start];
ch[start] = ch[end];
ch[end] = temp;
start++;
end--;
}
/**
* public String(char value[]) 此方法实现传入一个字符数组,返回一个字符串
*/
String str0 = new String(ch);
return str0;
} /**
* 方法II
*/
public static String reverseII(String str){
/**
* 调用toCharArray()方法,返回一个字符数组,方便通过下标取放字符,最终实现字符串的翻转
*/
char[] ch = str.toCharArray();
/**
* 定义一个空字符串
*/
String str0 = "";
for (int i = 0; i < ch.length; i++) {
/**
* 此法 str0 = temp + str0 中temp和str0的顺序是不能调换的,这是关键
*/
char temp = ch[i];
str0 = temp + str0;
}
return str0;
}
}
运行结果:

2.给定一个字符串,如"yekmaakkccekymbvb",求字符串中有多少种字符以及每个字符的个数;把结果写入E盘名为TestIOStream.txt的文本文件中;读出刚才写入TestIOStream.txt文本文件的内容。
public class TestIOStream {
public static void main(String[] args) {
String str = "yekmaakkccekymbvb";
Map<String,Integer> map = count(str);
write(map);
read();
}
/**
* 求字符串中有多少种字符及每个字符的个数
*/
public static Map<String,Integer> count(String s){
Map<String,Integer> map = new LinkedHashMap<String,Integer>();
for (int i = 0;i < s.length();i++){
/**
* public String substring(int beginIndex, int endIndex) 截取字符串中的子串
* (前闭后开)
* substring(i,i + 1)每次截取一个字符
* 定义一个key接收返回的子串
*/
String key = s.substring(i,i + 1);
/**
* 定一个整型value接收map.get(key)返回的值
*/
Integer value = map.get(key);
/**
* 判断value若为空,即
*/
if (value == null){
map.put(key,1);
}else {
map.put(key,value+1);
}
}
return map;
}
/**
* 把结果写入E盘名为TestIOStream.txt的文件夹中
*/
public static void write(Map<String,Integer> map){
PrintWriter pw = null;
try {
pw = new PrintWriter("e:/TestIOStream.txt");
pw.println("size:"+map.size());
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
for (Map.Entry entry : entrySet){
pw.println(entry.getKey()+":"+entry.getValue());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
pw.close();
}
}
/**
* 读出刚才写入的文本文件的内容
*/
public static void read(){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("e:/TestIOStream.txt"));
String str = null;
do {
str = br.readLine();
System.out.println(str);
}while (str != null);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果:


3.使用冒泡排序对一个int数组进行排序。
public class TestBubbleSort {
public static void main(String[] args) {
int [] arr = {9,7,6,4,3,1,0};
//int [] arr = {1,2,3,4,5,6,7};
System.out.println("排序前:"+Arrays.toString(arr));
bubbleSort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
}
public static void bubbleSort(int [] arr){
for (int i = 0;i < arr.length - 1;i++){
boolean flag = false;
for (int j = 0;j < arr.length - 1 - i;j++){
if (arr[j] > arr[j + 1]){
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
flag = true;
}
}
if (!flag){
break;
}
}
}
}
运行结果:

JavaSE编码试题强化练习5的更多相关文章
- JavaSE编码试题强化练习1
1. 编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 定义父类--圆类 */ public class Circle { / ...
- JavaSE编码试题强化练习7
1.编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 圆类 */ public class Circle { /** * 类属 ...
- JavaSE编码试题强化练习6
1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...
- JavaSE编码试题强化练习4
1.编写一个Worker类,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中.并编写相应的测试代码. /** * Worker类 */ public class Work ...
- JavaSE编码试题强化练习3
1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐. public class TestCirculation { public static void ma ...
- JavaSE编码试题强化练习2
1.编写递归算法程序:一列数的规则如下: 0.1.1.2.3.5.8.13.21.34...... 求数列的第40位数是多少. public class TestRecursion { public ...
- JavaSE面试题
JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...
- [002] - JavaSE面试题(二):基本数据类型与访问修饰符
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [002] - JavaSE面试题(二):基本数据类型与访问修饰符 第1问:Java的数据类型有哪 ...
- JavaSE 面试题: 类初始化和实例初始化等
JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...
随机推荐
- 02-第一个Python程序
第一个HelloPython程序 1.1Python源程序的基本概念 Python源程序是一个特殊格式的文本文件,可以使用任意文本编辑软件做Python的开发 Python程序的文件扩展名通常都是.p ...
- 长沙理工大学第十二届ACM大赛-重现赛 D 小M和天平 (01背包)
链接:https://ac.nowcoder.com/acm/contest/1/D 来源:牛客网 小M和天平 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言 ...
- pipeline语法学习日记
1.pipeline 整合job的通用代码,比较基本 2.pipeline参数化构建
- linux服务器安全配置攻略
引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...
- java.lang.Void类源码解析_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 在一次源码查看ThreadGroup的时候,看到一段代码,为以下: /* * @throws NullPointerEx ...
- 1. svn 简介
参考文档: http://svndoc.iusesvn.com/ SVN的 相关网站 什么是svn?Subversion是一个“集中式”的信息共享系统.版本库是Subversion的核心部分,是数据的 ...
- js 将时间戳转成时间格式化
一.时间戳 时间戳是以时间元年1970年开始算起到当前时间的一个值,以秒为单位,比如1535694719秒,如何转化为我们想要的格式,yyyy/mm/dd或者yyyy-MM-dd hh:mm,格式根据 ...
- react native 之 在现有的iOS工程中集成react native
在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...
- php 客户端调用elasticsearch接口
1.php调用elasticsearch接口[参考资料:https://www.cnblogs.com/php0916/articles/6587340.html] /data/www/syhuo.n ...
- 170817关于Listener的知识点
1. Listener 监听器简介 Listener是JavaWeb中三大组件之一.Servlet.Filter.Listener ...