java字符串练习题2、反向输出英文字符串
2023-09-14 09:04:57 时间
java字符串练习题2、反向输出英文字符串
目录
题目
反向输出英文文章的难度在于单词不能有错误的顺序,如果单词都翻过来输出那就没法玩了。很难看得懂了。
例如:I Have A Dream反向输出Dream A Have I
如果是直接方向输出就是:maerD A evaH I很明显这样将很难的正常读取。
源码:
package com.item.action;
public class Demo {
public static void main(String[] args) {
String str = "I Have A Dream";
// 字符串通过split函数使用【 】空格,分割为字符串数组
String[] strArr = str.split(" ");
// 创建一个新的用于存储单词的容器
String[] strArr1 = new String[strArr.length];
for (int i = 0; i < strArr.length; i++) {
// 我们从右向左一次将数据输入到新数组中
strArr1[i] = strArr[strArr.length - i - 1];
}
//便利新数组
for (int i = 0; i < strArr1.length; i++) {
if(i==strArr1.length-1) {
System.out.println(strArr1[i]);
}else {
System.out.print(strArr1[i]+" ");
}
}
}
}
输出效果:
优化效率
这里使用的是StringBuffer来优化的,直接在判断过程中赋值给StringBuffer,通过判断是否是最后一个来判定是否给加空格符号,这样我们一个单词的字符串就能按照单词的方式反向输出了。这里反向输出我没使用reverse函数,这里直接通过数组赋值时进行倒序赋值的方式进行处理的,这个也好理解,-i是去掉当前的进度留下对应的反向查询坐标,再-1是为了减掉数组下标越界的异常而添加的,我们做这类题目一定要多加小心,因为题目的小坑,小雷阵的是一堆堆的。
package com.item.action;
public class Demo {
public static void main(String[] args) {
String str = "I Have A Dream";
// 字符串通过split函数使用【 】空格,分割为字符串数组
String[] strArr = str.split(" ");
// 创建一个新的用于存储单词的容器
String[] strArr1 = new String[strArr.length];
StringBuffer sb = new StringBuffer();
for (int i = 0; i < strArr.length; i++) {
// 我们从右向左一次将数据输入到新数组
strArr1[i] = strArr[strArr.length - i - 1];
// 如果不是最后一个单词则追加该单词和空格,最后一个则只追加该单词
if (i != strArr.length - 1) {
sb.append(strArr1[i]+" ");
} else {
sb.append(strArr1[i]);
}
}
System.out.println(sb.toString());
}
}
输出效果:
其实,这个题目多少有些问题,因为没考虑到一句话结束的符号情况,英文中会出现很多【,】与【.】这些符号如有没有考虑的话也会完整的打乱所有语句的顺序,就例如:I Have A Dream.我这里加了一个【.】那么在操作的过程中就没有针对【.】进行处理,在这里就会出现异常的情况,那么这种情况解决起来的难度也不是很大,最直接的就是将【,】与【.】直接替换成【 ,】与【 .】这样就一切OK了,也没啥难度。
我们在这里进行一下测试,语句我也的也不会很长:
package com.item.action;
public class Demo {
public static void main(String[] args) {
String str = "I Have A Dream.";
str = str.replace(".", " .");
// 字符串通过split函数使用【 】空格,分割为字符串数组
String[] strArr = str.split(" ");
// 创建一个新的用于存储单词的容器
String[] strArr1 = new String[strArr.length];
StringBuffer sb = new StringBuffer();
for (int i = 0; i < strArr.length; i++) {
// 我们从右向左一次将数据输入到新数组
strArr1[i] = strArr[strArr.length - i - 1];
// 这里单独添加一个结束判断【 .】
if (strArr[strArr.length - i - 1].equals(".")) {
sb.append(" .");
continue;
}
if (i != strArr.length - 1) {
sb.append(strArr1[i] + " ");
} else {
sb.append(strArr1[i]);
}
}
System.out.println(sb.toString());
}
}
我这里单独添加了一个判断,只要拆分后出现了【.】我就输出【 .】这就小小的解决了这个问题。不过符号的内容肯定会很多,如果是一篇完整的文章肯定还需要一个单独的数组列表作为记录符号的容器,我们依据这个符号的数组容器进行逐一的处理即可,相对难度有一些,但是不大。
英文中的14个标点符号
分别是:
- the period (句号 )
- question mark (问号)
- exclamation point(感叹号)
- comma(逗号)
- semicolon(分号)
- colon(冒号)
- dash(破折号)
- hyphen(连字符)
- parentheses(圆括号)
- brackets(括号 )
- braces(括弧)
- apostrophe(撇号; 省略符号; 所有格符号)
- quotation marks(引号)
- and ellipses(省略号)
英文符号图标
希望能对大家有一定的价值。
相关文章
- java grouping,介绍 Java 8 groupingBy Collector
- java字符串的拆分_Java中的字符串分割 .
- java二维数组试题_Java二维数组及习题总结
- Contest1620 – 2020-2021-2学期《Java Web 系统开发》:java基础:字符串
- Java文件是如何编译成Dex文件的?如何执行Dex文件?「建议收藏」
- Java中字符串数组的输入与输出
- java如何输入字符串_JAVA中怎样输入字符串「建议收藏」
- Java实现字符串逆序输出
- java dom4j生成xml格式化_Java DOM4J方式生成XML的方法「建议收藏」
- 【Java】jar启动的java程序报错FileNotFoundException
- Java字符串转集合_java集合转数组
- java输出一个数组的元素_Java输出数组元素「建议收藏」
- java事务的使用_Java跨库事务
- Java截取字符串方法_java通过split截取字符串
- java字符串练习题2、反向输出英文字符串
- java制作验证码详解编程语言
- Java监控Oracle性能的最佳实践(java监控oracle)
- 策略利用Java来实现Redis过期策略(redisjava过期)
- Linux环境中如何顺利执行Java程序?(linux下执行java)
- Java操作Redis实现数据快速存取(java访问redis)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- 学习Java编程,攻克Oracle难题(java学oracle)
- Java技术将数据写入Oracle数据库(java写入oracle)
- java中UDP简单聊天程序实例代码
- Java实现字符串倒序输出的常用方法小结