我完成了相反的部分,但我对连字符有困难。任何帮助表示赞赏!此外,到目前为止的代码。
<canvas id="canvas" width="300" height="250"></canvas>
<hr/>
<h1>Images used:</h1>
<img src="https://images.blogthings.com/thecolorfulpatterntest/pattern-4.png"/>
<img src="http://www.printmag.com/wp-content/uploads/Sillitoe-black-white.gif"/>
示例输入:
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
System.out.print( "Enter a string of words that contains a hyphen: ");
String word = kbd.next();
for (int i = word.length()-1; i >= 0; i--) {
System.out.print(word.charAt(i));
}
}
必需的输出:
low-budget
答案 0 :(得分:2)
这是我能想到的最简单的解决方案(ofc还有其他更好的解决方案,但这是我的实现:
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
System.out.print( "Enter a string of words that contains a hyphen: ");
String word = kbd.next();
int loc = word.indexOf('-'); //Here I am trying to find the location of that hyphen
for (int i = word.length()-1; i > loc; i--) { //Now print the rest of the String in reverse TILL that location where we found hyphen. Notic i > loc
System.out.print(word.charAt(i));
}
System.out.print(" ");
for (int i = loc + 1; i < word.length(); i++) { //Now print the original String starting after the hyphen. Notice int i = loc + 1
System.out.print(word.charAt(i));
}
}
答案 1 :(得分:2)
我会这样做(在一行中):
System.out.println(new StringBuilder(word.replaceAll(".*-", "")).reverse());
边缘案件免费处理:
"^.*?-"
考虑没有需要编写的所有代码来处理这些(有效的)输入案例
分解其工作原理:
word.replaceAll(".*-", "")
将所有匹配项替换为正则表达式.*-
,这意味着&#34;所有内容(包括(最后)连字符&#34;),空白 - 有效删除匹配new StringBuilder(...)
使用传递给构造函数的String(从第1点)创建一个StringBuilder
。我们需要StringBuilder
的唯一原因是使用reverse()
方法(String
没有它)reverse()
撤销StringBuilder
的内容并将其准备好以便进行下一次通话(请参阅Fluent Interface)System.out.println
会导致String.valueOf()
在对象上调用,而对象又调用对象toString()
方法,StringBuilder
返回内容瞧!
答案 2 :(得分:2)
这是一个基于Java 8流的(一行)基于流的解决方案:
word.chars().skip(word.indexOf('-') + 1).mapToObj(c -> String.valueOf((char)c))
.reduce("", (a, b) -> b + a).ifPresent(System.out::println);
边缘案件处理:
indexOf(char)
在未找到的情况下返回-1
,因此最终结果是跳过零(-1 + 1
)chars()
流为空要在输入为空白时打印空白,请改用此代码:
System.out.println(word.chars().skip(word.indexOf('-') + 1)
.mapToObj(c -> String.valueOf((char)c)).reduce("", (a, b) -> b + a));
请注意使用reduce()
方法的替代形式,其中传入空白(""
)的标识值,用于空流的情况以保证减少结果。
答案 3 :(得分:1)
首先,根据-
拆分它。
然后,反过来第二部分......
String s = "low-budget";
String[] t = s.split("-");
for (int i = t[1].length() - 1; i >= 0; --i) {
System.out.print(t[1].charAt(i));
}