我有一个编程任务,其中的一部分需要我编写代码,从用户那里读取一行并删除该行中的所有空格。行可以由一个或多个单词组成。
我试图用这个程序做的是让它分析每个字符,直到找到一个空格,然后将那个子字符串保存为第一个标记。然后再次循环,直到它不再到达令牌或行尾。
当我试图编译它时,我总是得到这样的结果:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:694)
at trim.main(trim.java:23)
以下是代码
import java.util.Scanner ;
import java.lang.Character;
import java.lang.String ;
public class trim
{
public static void main (String[]args)
{
String a ;
String b ;
String c ;
char aChar ;
int i = 0 ;
Scanner scan = new Scanner(System.in);
a = scan.nextLine();
a =a.trim() ;
for ( ; i >= 0 ; i++ )
{
aChar = a.charAt(i) ;
if (aChar != 32)
{
a = a.substring(0,i+1);
}
else
{
b = a.substring(i,160) ;
b= b.trim();
c = c + a ;
c = c.trim() ;
a = b ;
i = 0 ;
}
if (b.equals(null))
{
i = -1 ;
}
}
}
}
更容易做到这一点的方法是感激的,但我仍然想让这个程序工作。
而且我不能在输入中使用标记。
感谢大家的帮助,
我将使用更简单的方法,并读取javadoc。
发布于 2013-03-26 17:19:38
java.lang.String
类的方法是substring
而不是substr
,这就是你程序中的错误。
此外,如果您可以使用正则表达式,则可以在一行中完成此操作。
a.replaceAll("\\s+","");
发布于 2016-04-06 15:31:48
无需使用literals
或regular expressions
即可完成此操作的最直观方法
yourString.replaceAll(" ","");
发布于 2013-03-26 17:19:50
将字符串中的所有空格替换为空字符。
String lineWithoutSpaces = line.replaceAll("\\s+","");
https://stackoverflow.com/questions/15633228
复制相似问题