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的更多相关文章

  1. JavaSE编码试题强化练习1

    1. 编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 定义父类--圆类 */ public class Circle { / ...

  2. JavaSE编码试题强化练习7

    1.编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 圆类 */ public class Circle { /** * 类属 ...

  3. JavaSE编码试题强化练习6

    1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...

  4. JavaSE编码试题强化练习4

    1.编写一个Worker类,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中.并编写相应的测试代码. /** * Worker类 */ public class Work ...

  5. JavaSE编码试题强化练习3

    1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐. public class TestCirculation { public static void ma ...

  6. JavaSE编码试题强化练习2

    1.编写递归算法程序:一列数的规则如下: 0.1.1.2.3.5.8.13.21.34...... 求数列的第40位数是多少. public class TestRecursion { public ...

  7. JavaSE面试题

    JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...

  8. [002] - JavaSE面试题(二):基本数据类型与访问修饰符

    第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [002] - JavaSE面试题(二):基本数据类型与访问修饰符 第1问:Java的数据类型有哪 ...

  9. JavaSE 面试题: 类初始化和实例初始化等

    JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...

随机推荐

  1. postman(二):详解在Pre-request Script中如何执行请求

    一.这里以Pre-request Script标签来介绍 postman提供了postman提供了一个"Send a request"代码段,他是已经封装好的发送请求的方法 一个& ...

  2. Django【第16篇】:Django之Form组件自定义验证规则

    自定义验证规则以及中间件简单介绍 1.python2和python3中的区别 对于python2内置的字符串类型有str和unicode 比如:"abc"是字符串,u"你 ...

  3. Java各种锁机制简述

    线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题. 在 Java 多线程编程当中,提供了多种实现 Java 线程安全的方式: 最简单的方式,使 ...

  4. css-外面元素的高度,由里面的元素进行撑开(由内部的高度决定)

    1.删除你的高度的固定值 2.将父元素的====>display:inline-block; 或者设置浮动====>float:left;

  5. Java——常用类(Enum)

    [枚举类型]  <1>只能取特定值中的一个.  <2>使用enum关键字.  <3>是java.lang.Enum类型.   [程序分析]    public en ...

  6. Codeforces 980D

    这题其实挺水的,但我比较vegetable,交了好多次才过. 题意: 给定一个序列,把这个序列的所有连续子序列分组,每组中任意两个数相乘是个完全平方数,输出每个子序列最少分的组数: 思路: 先把每个数 ...

  7. [洛谷2257]YY的GCD 题解

    整理题目转化为数学语言 题目要我们求: \[\sum_{i=1}^n\sum_{i=1}^m[gcd(i,j)=p]\] 其中 \[p\in\text{质数集合}\] 这样表示显然不是很好,所以我们需 ...

  8. 基于Nginx的https服务

    1.HTTPS协议的实现 1.为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 对传输内容进行加密以及身份验证 2.对称加密 非对称加密 3.H ...

  9. (3.2)狄泰软件学院C++课程学习剖析三

    对课程前面40课的详细回顾分析(一) 0. int main() { // ① Array t(3,3); //普通模式 // ② Array *t=new Array(3,3); //指针方式 // ...

  10. Spring Cloud Commons教程(一)普通抽象

    诸如服务发现,负载平衡和断路器之类的模式适用于所有Spring Cloud客户端可以独立于实现(例如通过Eureka或Consul发现)的消耗的共同抽象层. @EnableDiscoveryClien ...