我是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/