将字符串转换为long时出现空白问题

时间:2016-04-20 15:40:23

标签: java string for-loop long-integer

我试图将3个数字与字符串分开,然后将它们打印为字符串。我需要我的程序使用空格作为分隔符来表示我已经在这个数字的末尾。然后我需要启动下一个数字作为循环的新迭代。然而,由于不了解白色空间崩溃我认为它崩溃了。

我该怎么办?

String cipherTxt = "45963254 45231582 896433482 ";
for(int i=0; i<cipherTxt.length(); i++){
     String numberAsString = cipherTxt.substring(i,i+9);
     long number = Long.parseLong(numberAsString);
     System.out.println("The number is: " + number);
}

4 个答案:

答案 0 :(得分:0)

为什么你不能尝试这样的事情:

String cipherTxt = "45963254 45231582 896433482 ";
String[] splitted = cipherTxt.split("\\s+");

for(String s : splitted){
     long number = Long.parseLong(s);
     System.out.println("The number is: " + number);
}

答案 1 :(得分:0)

尝试使用更简单的Scanner类,作为

String txt = "45963254 45231582 896433482 ";
Scanner scanner = new Scanner(txt);
while(scanner.hasNext())
    System.out.println(scanner.nextLong());

或者,如果你愿意,也许String.split()

String txt = "45963254 45231582 896433482 ";
String[] tokens = txt.split(" ");
for(String temp:tokens)
    System.out.println(Long.parseLong(temp));

答案 2 :(得分:0)

执行:

String cipherTxt = "45963254 45231582 896433482 ";
String[] splitted = cipherTxt.split("\\s+");

for(String s : splitted){
     long number = Long.parseLong(s);
     System.out.println(number);
}

这个for循环遍历分裂的数组中的每个String 然后它使文本变长。 你也可以这样写:

for(int i = 0; i < splitted.length;i++){
     long number = Long.parseLong(splitted[i]);
     System.out.println(number);
}
希望我帮忙!

编辑: 当然,如果您有任何疑问,请询问!

答案 3 :(得分:0)

使用正则表达式\d+查找数字。循环遍历所有给定的数字并将它们保存到List,以便之后可以再次使用存储的变量。

String txt = "45963254 45231582 896433482 ";

List<Long> list = new ArrayList<>();
Matcher m = Pattern.compile("\\d+").matcher(txt);
while (m.find()) {
   long l = Long.parseLong(m.group());
   list.add(l);
   System.out.println(l);
}

如果您希望将数组作为输出,请在循环中添加:

Long[] numbers = list.toArray(new Long[list.size()]);