Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中添加带空格的int输入?_Java_User Interface_Median_Mode - Fatal编程技术网

如何在java中添加带空格的int输入?

如何在java中添加带空格的int输入?,java,user-interface,median,mode,Java,User Interface,Median,Mode,例如,我尝试将一个输入作为一个整数,中间有空格 12345改为12345。我需要在它们之间留出空间,以便我可以计算和处理中位数、模式、平均值和标准偏差。请注意,我以前尝试过Integer.parseInt() 导入javax.sound.midi.SysexMessage; 导入java.util.array; 导入java.util.*; 导入javafx.application.application; 导入javafx.event.ActionEvent; 导入javafx.event.E

例如,我尝试将一个输入作为一个整数,中间有空格
12345
改为
12345
。我需要在它们之间留出空间,以便我可以计算和处理中位数、模式、平均值和标准偏差。请注意,我以前尝试过
Integer.parseInt()

导入javax.sound.midi.SysexMessage;
导入java.util.array;
导入java.util.*;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
导入javafx.application.application;
导入javafx.scene.Group;
导入javafx.scene.scene;
导入javafx.stage.stage;
导入javafx.scene.text.text;
公开课决赛{
按钮;
公共静态void main(字符串[]args){
//int[]数据集={1,2,3,4345312756,0,-234321132234};
//int[]数据集={5,3,2,5,2,5758345,32231,5,5,5,2,2};
//扫描仪=新的扫描仪(System.in);
//字符串输入=scanner.nextLine();
//
//
//
//
//
//
//
//
//
//int[]数据集=新的int[input.length()];
扫描仪=新的扫描仪(System.in);
字符串输入=scanner.nextLine();//在您的案例中从用户输入的数字
String[]list;//用于存储单个数字的列表
list=input.split(“”;//Regex将字符串拆分,以获得每个数字
//卑鄙
整数和=0;
for(字符串n:列表){
sum+=Integer.parseInt(n);
}
System.out.println(“数据集的平均值为”+
((双倍)总和/列表长度));
//中间带
数组。排序(列表);
如果(列表长度%2!=0){
System.out.println(“数据集的中位数是:“+Double.parseDouble(list[list.length/2]));
}否则{
System.out.println(“数据集的中值为:“+Double.parseDouble(list[list.length/2]+list[list.length/2-1])/2.0);
}
//模式
int maxNumber=-1;
int-maxampearancess=-1;
for(int i=0;i最大外观){
maxNumber=Integer.parseInt(列表[i]);
最大外观=计数;
}
}
System.out.println(“数据集的模式:“+maxNumber”);
//性病病毒
双标准差总和=0.0,标准差=0.0;
int length=list.length;
用于(字符串编号:列表){
STDVsum+=Double.parseDouble(num);
}
双平均值=标准差和/长度;
用于(字符串编号:列表){
标准偏差+=Double.parseDouble(Math.pow(num-mean,2));//它说运算符-不适用。。。
}
系统输出打印项次(“标准偏差”+数学sqrt(标准偏差/长度));
}
}
}
我希望有一个像
12345
这样的输入进行处理和计算,而不是采用
12345
。正如您在代码中看到的, 我有一个整数数组,但在本例中缺少带空格的输入

编辑:(新更新) 该示例的结果如下所示:

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

但正确的结果是:

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

此外,我无法计算STDV,因为我无法转换:
标准偏差+=Double.parseDouble(数学功率(num-mean,2))

您可以将输入作为字符串获取,然后将字符串转换为int值数组

像这样:

    Scanner sc = new Scanner(System.in);

    String input = sc.nextLine();
    int[] numbers = new int[input.length()];

    int index = 0;
    for (char c : input.toCharArray()){
        numbers[index] = Character.getNumericValue(c);
        index++;
    }

您应该能够使用数字数组进行计算。

要做到这一点,只需要求用户输入数字,将它们作为字符串,用.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++;
    }
如果你想检查两个字符串是否相等,你可以这样做

    if (list[i].equals(list[j])) {
                count++;
            }
此外,我认为您需要在检查每个数字后重置计数,因此在此处也添加以下内容:

                if (count > maxAppearances) {
            maxNumber = Integer.parseInt(list[i]);
            maxAppearances = count;
        }
        count=0;
    }
在本例中,STDV issue 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现在是否返回正确的结果

您希望您输入的是单个数字,如1、2、3等,但由用户在同一行上输入?是的,如上所示。我知道了,但没有输入。该测试有一个示例,而不是像Scanner=newscanner(System.in)这样的输入;StringIt似乎可以工作,但是检查上面的结果,其中有一个bug。而且,我无法转换标准偏差+=Double.parseDouble(Math.pow(num-mean,2));//因为它说运算符-不适用…请先尝试在另一个值中将num强制转换为Integer,然后执行以下操作:::int num_to_int=Integer.parseInt(num);parseDouble(Math.pow(num_to_int-mean,2));当你的结果低于12 13 15 16 24 15 22 10 9 13 13 18 16 25 23 24时,一切正常数据集的平均值是16.75数据集的中值是:808.0错误数据集的模式:13 STDV 5.11737261468 3 4 5 6 7 6 5数据集的平均值是5.0数据的中值设置为:27.5错误数据集的模式:3 STDV 1.41421