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. vb中typename函数

    适用于获得一个变量的类型名称的, 比如 A 是一个字符串变量,那么 TypeName(A)=String

  2. Intelli IDEA快捷键(配合IdeaVim)(转)

    Intelli IDEA快捷键(配合IdeaVim)(转) Intelli IDEA开发环境,个人总结的一些常用的快捷键. 想要使用vim方式编辑代码,可以使用Intelli IDEA的IdeaVim ...

  3. 在目标端重建sequence的脚本

    select 'create sequence '||SEQUENCE_OWNER||'.'||sequence_name|| ' minvalue '||min_value|| ' maxvalue ...

  4. SpringBoot---Kafka

    1.实战 <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka --> <dependency> < ...

  5. [洛谷P1864] NOI2009 二叉查找树

    问题描述 已知一棵特殊的二叉查找树.根据定义,该二叉查找树中每个结点的数据值都比它左儿子结点的数据值大,而比它右儿子结点的数据值小. 另一方面,这棵查找树中每个结点都有一个权值,每个结点的权值都比它的 ...

  6. 【leetcode】522. Longest Uncommon Subsequence II

    题目如下: 解题思路:因为given list长度最多是50,我的解法就比较随意了,直接用一个嵌套的循环,判断数组中每个元素是否是其他的subsequence,最后找出不属于任何元素subsequen ...

  7. 理解URL以及如何区分相对URL和绝对URL

    URL(Uniform Resource Locator 统一资源定位符)可以理解为网络地址. url 包含了关于文件储存位置和浏览器应该如何处理文件的信息. URL的第一个部分称为模式scheme, ...

  8. POJ 2104 K-th Number ( 求取区间 K 大值 || 主席树 || 离线线段树)

    题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用 ...

  9. [HG]walk 题解

    前言 学长博客划水,抄题解,差评. 于是我来重新写一篇正常的题解,虽然解法跟标程不一样,但是复杂度是一样的. 题面 题目描述 在比特镇一共有\(n\)个街区,编号依次为\(1\)到\(n\),它们之间 ...

  10. 安装memcached和elasticsearch服务并systemctl管理

    [root@izbp18dv3a3metugyd02qxz bin]# rpm -qa | grep memcache [root@izbp18dv3a3metugyd02qxz bin]# yum ...