如何在Java中使用空格添加int输入?

生命学习者

我试图将输入作为整数,例如1 2 3 4 5之间用空格隔开12345我需要在它们之间留出空间,以便我可以计算和处理中值,众数,均值和标准差。请注意,我之前已经尝试Integer.parseInt()过。

import javax.sound.midi.SysexMessage;
import java.util.Arrays;
import java.util.*;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Text;

public class FinalProg {

        Button button;
        public static void main(String[] args) {


//        int[] dataSet = {1,2,3,4,345,312,756,0,-234321132,234};
//        int[] dataSet = {5,3,2,5,2,5,758,345,32,231,5,5,5,2,2};

//        Scanner scanner = new Scanner(System.in);
//        String input = scanner.nextLine();
//
//
//
//
//
//
//
//
//
//        int [] dataSet = new int[input.length()];

            Scanner scanner = new Scanner(System.in);
            String input = scanner.nextLine(); //Numbers inputted from user in your case
            String[] list;             //List to store individual numbers
            list = input.split(" ");     // Regex to split the String so you get each number

            //Mean
            int sum = 0;

            for (String n : list) {
                sum += Integer.parseInt(n);
            }

            System.out.println("The mean of the data set is  " +
                    ((double) sum / list.length));


            //Median
            Arrays.sort(list);
            if (list.length  % 2 != 0) {
                System.out.println("The median of the data set is: " + Double.parseDouble(list[list.length / 2]));
            } else {
                System.out.println("The median of the data set is: " + Double.parseDouble(list[list.length / 2] + list[list.length / 2 - 1]) / 2.0);
            }

            //Mode

            int maxNumber = -1;
            int maxAppearances = -1;

            for (int i = 0; i < list.length; i++) {
                int count = 0;

                for (int j = 0; j < list.length; j++) {
                    if (list[i] == list[j]) {
                        count++;
                    }
                }
                if (count > maxAppearances) {
                    maxNumber = Integer.parseInt(list[i]);
                    maxAppearances = count;
                }
            }

            System.out.println("The mode of the data set: " + maxNumber);


        //STDV

        double STDVsum = 0.0, standardDeviation = 0.0;
        int length = list.length;
        for(String num : list) {
            STDVsum += Double.parseDouble( num);
        }
        double mean = STDVsum/length;
        for(String num: list) {
            standardDeviation += Double.parseDouble(Math.pow(num - mean, 2)); // It says operator - doesn't apply...
        }
        System.out.println( "STDV "+ Math.sqrt(standardDeviation/length));

        }


        }
}

我希望有一个像1 2 3 4 5处理和计算这样的输入,而不是采用12345如您在上面的代码中所见,我有一个整数数组,但是在这种情况下缺少带空格的输入

编辑:(新更新)该示例的结果显示为:

2 3 4 5 6 7 6 6数据集的平均值是4.875数据集的中位数是:32.5数据集的模式:2

但是正确的结果是:

均值:4.875中位数:5.5模式:6

另外,由于无法转换,所以无法计算STDV:standardDeviation + = Double.parseDouble(Math.pow(num-mean,2));

Anastasios Zympidis

为此,只需问用户输入的数字是否为字符串,然后用.split(“”)拆分,然后将其解析为整数即可。

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine(); //Numbers inputted from user in your case 
    String[] list ;             //List to store individual numbers
    list = input.split(" ");     // Regex to split the String so you get each number                         
    int sum = 0;                //Your sum

    for(String i : list)        //Iterate through Array 
    {
         sum += Integer.parseInt(i); //Parse the string value as int to your sum
    }
    System.out.println(sum);  // to check if everything worked fine

关于您面临的其他问题:中位数是错误的,因为这里:

    System.out.println("The median of the data set is: " + Double.parseDouble(list[list.length / 2] + list[list.length / 2 - 1]) / 2.0);

您不考虑list [list.length / 2]值是一个字符串。修复了如下问题:

    float median = (Integer.parseInt(list[list.length/2]Integer.parseInt(list[(list.length/2)-1])) / 2f ;
    System.out.println("The median of the data set is: " + median);

关于模式问题,您只是再次忘记了您正在处理一个字符串数组,并以错误的方式检查了on是否等于另一个:

    if (list[i] == list[j]) {
           count++;
    }

如果您要检查2个字符串是否相等,可以这样进行

    if (list[i].equals(list[j])) {
                count++;
            }

我也认为您需要在检查每个数字后重新设置计数,因此也请在此处添加:

                if (count > maxAppearances) {
            maxNumber = Integer.parseInt(list[i]);
            maxAppearances = count;
        }
        count=0;
    }

在这种情况下,STDV问题num仍然是字符串,因此您不能在其上调用Math.pow:

    standardDeviation += Double.parseDouble(Math.pow(num - mean, 2));

通过将num解析为int来修复

    for(String num: list) {
        int num_to_Integer = Integer.parseInt(num);
        standardDeviation += Math.pow(num_to_Integer - mean, 2); //No need to parse now
    }

检查STDV现在是否返回正确的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在包含空格的输入中使用xargs?

java - 如何在java中使用int autoincrement no repeat添加string + id组合

如何在Java中使用带空格的枚举

如何在Java中使用空格读取属性名称

如何在Java中不带空格的输入?

如何在Python 3中使用readlines读取由空格分隔的整数输入文件?

如何在控制台中使用空格分隔多个输入

如何使用扫描仪在Java中使用空格输入字符串

如何在listchars中使用多个空格?

如何在bash别名中使用空格?

如何在语法中使用空格?

如何在“ for”函数中使用空格

如何在Python中使用Re库在括号和字符串之间添加空格?

如何在组合框中使用JQuery在单词之间添加空格?

如何在 PHP 中的输入框中添加空格?

避免在输入中使用空格

如何在Java中使用字节构建int值?

如何在Java中使用int / double in和out of loop

如何在Java通用方法中使用int代替T?

如何在Java(Android)中使用getMonth添加前导零

如何在Java中使用ArrayList添加元素?

如何在 Java 中使用 Streams 添加对象的属性?

如何在Java中使用前导空格格式化数字

如何在Java中使用HttpGet在REST调用中传递空格

如何在Linux中使用Java命令获取到当前正在执行的jar的空格路径?

如何在Java中使用正则表达式一一替换空格?

如何在 C++ 中使用 while 或 for 循环添加用户输入的数字?

如何在类中使用不同的多个用户输入在字典上添加数据?

如何在 Formik 中使用输入清理?