我希望能够在IDE的控制台中键入以下内容:
reverse("a b c d")但目前我只能输入
a b c d 我该如何实现这一点?我尝试过使用args,但是我得到了一个错误。
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]+" ");
}
}发布于 2017-10-19 21:13:37
要解决您的问题,您可以使用一些正则表达式来获取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
在这种情况下,您必须检查方法的名称,因此如果字符串以名称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);
}发布于 2017-10-19 22:16:23
如果您喜欢使用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")
https://stackoverflow.com/questions/46830524
复制相似问题