我希望能够在IDE的控制台中键入以下内容:
reverse("a b c d")
但目前我只能输入
a b c d
我如何实现这一目标?我尝试过使用args [0]但是我收到了错误。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String sentence = sc.nextLine();
reverse(sentence);
}
public static void reverse(String s){
String [] stringArray;
stringArray = s.split(" ");
int counter = stringArray.length;
for (String word : stringArray) {
counter -=1;
System.out.print(stringArray[counter]+" ");
}
}
答案 0 :(得分:2)
要解决您的问题,您可以使用一些正则表达式来获取reverse("get this")
中的值:
s = s.replaceAll("reverse\\(\"(.*?)\"\\)", "$1");
秒而不是那个循环你可以使用StringBuilder::reverse
来反转你的字符串:
public static void reverse(String s) {
s = s.replaceAll("reverse\\(\"(.*?)\"\\)", "$1");
System.out.println(s);
System.out.println(new StringBuilder(s).reverse().toString());
}
<强>输入强>
reverse("a b c d")
<强>输出强>
d c b a
编辑
根据您的评论:
当我运行应用程序时。它会要求用户输入。如果 用户输入:
reverse("I am an apple")
然后输出:apple an am I
在这种情况下,您必须检查方法的名称,因此如果String以名称reverse
开头,则调用reverse方法,例如:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String sentence = sc.nextLine();
if (sentence.startsWith("reverse")) {
reverse(sentence);
}
}
public static void reverse(String s) {
s = s.replaceAll("reverse\\(\"(.*?)\"\\)", "$1");
List<String> stringArray = Arrays.asList(s.split("\\s+"));
Collections.reverse(stringArray);
System.out.println(stringArray);
}
答案 1 :(得分:0)
如果您想使用java反射API,请尝试以下方法:
package Test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Scanner;
public class Example {
public static void main(String[] args) throws InvocationTargetException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException {
Scanner sc = new Scanner(System.in);
String sentence = sc.nextLine();
Class<?> c = Class.forName("Test.Example");//your package and class
//get the method to invoke
Method method = c.getDeclaredMethod (sentence.substring(0, sentence.indexOf("(")), String.class);
//get the string param
method.invoke (c, sentence.split("\"")[1]);
}
public static void reverse(String s){
String [] stringArray;
stringArray = s.split(" ");
int counter = stringArray.length;
for (String word : stringArray) {
counter -=1;
System.out.print(stringArray[counter]+" ");
}
}
public static void doNotReverse(String s){
System.out.print(s);
}
}
您可以在控制台中输入reverse("a b c d")
或doNotReverse("a b c d")