java - 带有空格的字符串无法正确解析

标签 java

我是Java新手,所以我的知识非常有限。我一直在尝试找出这段代码中的问题。

 import java.util.Scanner;
 public class avgFinder {
   public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     System.out.println("Input numbers to average. Separate by a space.");
     String nums = scan.next();
     String[] parseNums = nums.split("[ ]");
     double sum = 0;
     int cnt = 0;
     for (int a=0; a<=parseNums.length-1; a++) {
       sum += Double.parseDouble(parseNums[a]);
       cnt++;
     }
     double mean = sum/cnt;
     System.out.println("Mean: " + mean);
   }
}

但是当我输入一组数字时,只打印第一个数字而不是实际平均值。示例:

Input numbers to average. Separate by a space.
1 2 3
Mean: 1.0

另一件事是,如果我将 nums.split("[ ]") 替换为 nums.split("[,]") 并在之间放置逗号而不是空格输出中的数字,它实际上输出平均值。不过我更喜欢空间,它看起来更干净。为什么会发生这种情况?

最佳答案

试试这个

使用nextLine()而不是next()

nextLine returns complete line of text while next returns only one word

还可以使用nums.split("");

import java.util.Scanner;
 public class avgFinder {
   public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     System.out.println("Input numbers to average. Separate by a space.");
     String nums = scan.nextLine();
     String[] parseNums = nums.split(" ");
     double sum = 0;
     int cnt = 0;
     for (int a=0; a<=parseNums.length-1; a++) {
       sum += Double.parseDouble(parseNums[a]);
       cnt++;
     }
     double mean = sum/cnt;
     System.out.println("Mean: " + mean);
   }
}

关于java - 带有空格的字符串无法正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069074/

相关文章:

java - 随机数生成器继续包含 0

java - JTable - 用于选择行的 ActionListener

java - Jsoup 解析器删除带有 '<' 和 '>' 的单词

java - 在事务内进行无事务 EJB 调用

Java Swing 安排 JInternalFrames

java - 为什么session.setFlushMode(FlushMode.MANUAL);之后数据存入数据库 session .保存(); ( hibernate )

java - 如何用java编辑文件内容(数字)?

java - ExceptionTranslator 的异常不会返回到 flex

java - 如何在Android中设置菜单的标题

java - 在不同网络上使用 RMI