前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java字符串练习题2、反向输出英文字符串

java字符串练习题2、反向输出英文字符串

作者头像
红目香薰
发布2023-01-13 10:35:11
3730
发布2023-01-13 10:35:11
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

java字符串练习题2、反向输出英文字符串

目录

java字符串练习题2、反向输出英文字符串

题目 

源码:

优化效率

英文中的14个标点符号

英文符号图标

题目 

反向输出英文文章的难度在于单词不能有错误的顺序,如果单词都翻过来输出那就没法玩了。很难看得懂了。

例如:I Have A Dream反向输出Dream A Have I

如果是直接方向输出就是:maerD A evaH I很明显这样将很难的正常读取。

源码:

代码语言:javascript
复制
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是为了减掉数组下标越界的异常而添加的,我们做这类题目一定要多加小心,因为题目的小坑,小雷阵的是一堆堆的。

代码语言:javascript
复制
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了,也没啥难度。

我们在这里进行一下测试,语句我也的也不会很长:

代码语言:javascript
复制
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个标点符号

分别是:

  1. the period (句号 )
  2. question mark (问号)
  3. exclamation point(感叹号)
  4. comma(逗号)
  5. semicolon(分号)
  6. colon(冒号)
  7. dash(破折号)
  8. hyphen(连字符)
  9. parentheses(圆括号)
  10. brackets(括号 )
  11. braces(括弧)
  12. apostrophe(撇号; 省略符号; 所有格符号)
  13. quotation marks(引号)
  14. and ellipses(省略号)

英文符号图标

希望能对大家有一定的价值。 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java字符串练习题2、反向输出英文字符串
  • 题目 
  • 源码:
  • 优化效率
  • 英文中的14个标点符号
  • 英文符号图标
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档