Java 递归方法打印字符串并按1倒计时,每次递归删除1个字母

Java 递归方法打印字符串并按1倒计时,每次递归删除1个字母,java,string,recursion,methods,command-line,Java,String,Recursion,Methods,Command Line,我正在研究一个递归方法,它将返回并在我的主方法中打印一个字符串,该字符串将按1倒计时N。为该字符串的每个递归删除一个字母。直到N变为1或字符串有1个字母。(N是命令行上的int) 例如,如果我的命令行是:5 它还应该输出: 5瓦伦丁,4阿伦汀,3扁豆素,2恩汀,1恩汀 到目前为止,我设法倒计时输入到命令行参数上的数字。我只是不知道如何从字符串中删除一个字母:o 到目前为止,我的代码是: public static void main(String[] args){ int numbe

我正在研究一个递归方法,它将返回并在我的主方法中打印一个字符串,该字符串将按1倒计时N。为该字符串的每个递归删除一个字母。直到N变为1或字符串有1个字母。(N是命令行上的int)

例如,如果我的命令行是:5

它还应该输出:

5瓦伦丁,4阿伦汀,3扁豆素,2恩汀,1恩汀

到目前为止,我设法倒计时输入到命令行参数上的数字。我只是不知道如何从字符串中删除一个字母:o

到目前为止,我的代码是:

public static void main(String[] args){
      int number = Integer.parseInt(args[0]);
      String word = new String("");
      word = args[1];

      String method = recursive.method1(number);
      System.out.println(method);
   }

   public static String method1(int number){
      if (number < 0){
         return "";
      } 
      else{
         return number + ", " + method1(number - 1);
      }
   }
publicstaticvoidmain(字符串[]args){
int number=Integer.parseInt(args[0]);
字符串字=新字符串(“”);
word=args[1];
String method=recursive.method1(数字);
系统输出打印LN(方法);
}
公共静态字符串方法1(整数){
如果(数字<0){
返回“”;
} 
否则{
返回编号+“,”+method1(编号-1);
}
}
您可以通读文档,了解如何获取字符串的各个部分

  • 更改方法定义以包含
    单词
  • word
    添加到您的
    return
    语句中:
    returnnumber+“”+word+…
  • 1st
    索引调用原始单词的子字符串

  • 检查
    是否希望将字符串传递给递归方法。并在
    String
    类的文档中查找
    substring
    。嗨,PopoFibo,不幸的是,我在使用Int:10和String:10的代码示例时出错了?StringIndexOutOfBOundsException:字符串索引超出范围:-1。是否有此错误的修复方法?@Asiax3您的字符串长度需要等于您正在传递的数字,对于“十”,您将在三次传递中用完整个字符串,并且在第四次传递时,它的子字符串()尝试查找第四个索引,该索引不在此处:(,当数字变为1或字符串只有一个字母时,您能告诉我递归方法停止的方法吗?@Asiax3更改您的
    if(数字
    
    public static void main(String[] args){
                int number = 5;
                  String word = new String("");
                  word = "Valentine";
                  String method = Recurcive.method1(number, word);
                  System.out.println(method);
               }
    
               public static String method1(int number, String word){
                  if (number <= 0){
                     return "";
                  } 
                  else{
                     return number + " " + word + ", " + method1(number - 1, word.substring(1));
                  }
               }
    
    5 Valentine, 4 alentine, 3 lentine, 2 entine, 1 ntine,