Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串一次删除一个字母_Java_String_Substring - Fatal编程技术网

Java字符串一次删除一个字母

Java字符串一次删除一个字母,java,string,substring,Java,String,Substring,我试图一次删除一个单词中的一个字母。例如,如果单词it math,我想试试:ath,mth,mah 现在我有: for (int i = 1; i < word.length() ; i++){ String removed = word.substring(0, i -1) + word.substring(i -1 , word.length()); //do something with the word } for(int

我试图一次删除一个单词中的一个字母。例如,如果单词it math,我想试试:ath,mth,mah 现在我有:

  for (int i = 1; i < word.length() ; i++){
         String removed = word.substring(0, i -1) 
             + word.substring(i -1 , word.length());

  //do something with the word
}
for(int i=1;i
这不起作用,因为我得到错误:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1

谢谢你的帮助

for(int i=1;ifor (int i = 1; i < word.length() ; i++){
            String removed = word.substring(0, i - 1) 
                + word.substring(i , word.length());

            System.out.println(removed);
         //do something with the word
        }
删除的字符串=字.子字符串(0,i-1) +子字符串(i,word.length()); 系统输出打印项次(已删除); //用这个词做点什么 } 实际上,你需要从
i
开始,而不是
i-1
来获得最后一个单词的第二部分。例如,您可以看到这是必需的,并且工作
word.substring(i,word.length())


不过,它并没有抛出异常。

类似的方法应该可以工作

public class LetterRemover {
  public static void main(String [] args) {
    String hello = "hello";

    for (int i = 1; i < hello.length(); ++i) {
      if(i == 1) {
        System.out.println(hello.substring(i));
      } else {
        System.out.println(hello.substring(0, i-1) + hello.substring(i));
      }
    }
  }
}
公共类字母清除器{
公共静态void main(字符串[]args){
String hello=“hello”;
for(int i=1;i
以下各项应能起作用:

for (int i = 0; i < word.length(); i++) {
   String removed = word.substring(0, i) + word.substring(i + 1);
}
for(int i=0;i
int-wordLength=word.length();
for(int i=0;i
你需要每次删除1个字符,这样你就可以把它变成两个单词,并把它们连接起来

  • 第一个字以无字符开头(0到0),第二个字(1到字长)。现在跳过第一个字符
  • 您将第一个单词(0到1)和第二个单词(2到单词长度)。现在跳过第二个字符,等等

  • 请显示完整的堆栈跟踪并标记错误发生的行。这是一个非常大的程序,这只是其中的一个组件,但堆栈跟踪指向这一行。幸运的是,最深的调用位于跟踪的顶部。请发布跟踪并突出显示源代码中引发此异常的那一行。哦,我实际上意识到错误的来源不是这一行。谢谢这里有一个错误,但我一定已经解决了。现在是另外一件事,请回答你的问题。注释中的异常无法读取。再说一次:请在异常发生的那一行标记。这不是答案,不是吗?他在问如何用提供的代码片段删除一个字母,所以这里我给出了一个问题的解决方案,这是代码中的错误,但是的,其他异常问题对我来说是不可复制的。是的。因为问题不完整。因为缺少堆栈跟踪。这就是为什么我们要求在评论中作出澄清。您可能知道,OP表示“问题”源于她/他的代码中完全不同的一行。这有什么不同,为什么会起作用?在回答问题的同时,请解释您所做的更改。您需要每次删除1个字符,这样您就可以将其设置为两个单词并相互连接。步骤1:第一个单词以无字符开头(0到0),第二个单词(1到单词长度)。所以现在你跳过第一个字符。第二步:让第一个字(0到1)和第二个字(2到字长)。所以现在你跳过第二个字符,等等
    int wordLength = word.length();
    for (int i = 0; i < wordLength; i++) {
        String removed = word.substring(0, i )
                + word.substring(i + 1, wordLength);
        System.out.println(removed);
        //do something with the word
    }