【发布时间】:2019-09-27 13:23:54
【问题描述】:
java中如何翻转句子中的两个单词
输入:“嗨,简今天过得怎么样”
输出:“你今天好吗,简”
我尝试了什么:
String s = "hi how are you doing today jane";
ArrayList<String> al = new ArrayList<>();
String[] splitted = s.split("\\s+");
int n = splitted.length;
for(int i=0; i<n; i++) {
al.add(splitted[i]);
}
for(int i=0; i<n-1; i=i+2) {
System.out.print(al.get(i+1)+" "+al.get(i)+" ");
}
if((n%2) != 0) {
System.out.print(al.get(n - 1));
}
我得到的输出: “你今天好吗”
【问题讨论】:
-
(1) 看看你的
System.out.print语句——你只输入了一个空格,而al.get(i)之后确实需要第二个空格。 (2) 如果n是奇数,您需要一种方法来解释最后一个元素(因为您编写的内容会成对打印它们)。这可以通过for循环之后的简单if语句来完成 -
这个问题比上一个问题好多了。感谢您考虑人们的意见。 +1。
-
你怎么知道要翻转哪两个词?
-
@JaneF 只需在循环末尾添加
if((n % 2) != 0) System.out.print(a1.get(n - 1));即可翻译为“如果n 不是对,则打印最后一个元素”。 -
@PaulLemarchand 的回答更好。它和我做的一样,并使用更多的内置语言工具来做。我使用数组的替代方案不能与
Collections.swap()一起玩哦,而且他不使用备用数组(读者练习 - 更改我的代码以避免备用数组)。当然,当您使用ArrayList和流时,实际创建的垃圾量要高得多。
标签: java arrays string arraylist