Java 如何在数组赋值中将Int转换为Double

Java 如何在数组赋值中将Int转换为Double,java,Java,因此,我的一项任务给我带来了一些麻烦。这是向我们提出的问题: 在Averages.java文件中编写代码。如前所述,应使用IO模块输出答案 你的任务是根据输入列表计算平均值。首先询问用户将输入多少个数字(双倍)。然后提示输入那么多的数字 然后按顺序输出以下值min、max、sum、mean、median、mode。在本练习中,您可以假设存在1个模式或不存在任何模式。(例如{1,3,3,4,4}中没有模式,因为有2个3和2个4,但是{1,3,3,4}的模式是3)。如果不存在模式,则可以输出字符串“

因此,我的一项任务给我带来了一些麻烦。这是向我们提出的问题: 在Averages.java文件中编写代码。如前所述,应使用IO模块输出答案

你的任务是根据输入列表计算平均值。首先询问用户将输入多少个数字(双倍)。然后提示输入那么多的数字

然后按顺序输出以下值min、max、sum、mean、median、mode。在本练习中,您可以假设存在1个模式或不存在任何模式。(例如{1,3,3,4,4}中没有模式,因为有2个3和2个4,但是{1,3,3,4}的模式是3)。如果不存在模式,则可以输出字符串“none”

中位数是通过找到中间数来确定的。如果不存在这样的数字,则通过取两个中间数字的平均值来计算

提示:为了完成中值/模式计算,将数字列表按某种排序顺序保存可能会很有用。i、 e.每次插入时,将数字放在“正确”的位置

示例(注意:不应打印注释说明-它们仅供您参考):

这是我当前的代码:

public class Averages{
    public static void main(String []args){
        int n, c, d, swap,sum=0;
        Scanner in = new Scanner(System.in);
        System.out.println("Input number of integers to sort");
        n = in.nextInt();
        int array[] = new int[n];
        System.out.println("Enter " + n + " integers");
        for (c = 0; c < n; c++){
            array[c] = in.nextInt();
            sum=sum+array[c];
        }

        for (c = 0; c < ( n - 1 ); c++) {
            for (d = 0; d < n - c - 1; d++) {
                if (array[d] > array[d+1]) /* For descending order use < */
                {
                    swap = array[d];
                    array[d] = array[d+1];
                    array[d+1] = swap;
                }
            }
        }
        System.out.println("Sorted array:");
        for (c = 0; c < ( n - 1 ); c++) {
            System.out.println(array[c]);
        }


        System.out.println("Sum="+sum);
        System.out.println("Max="+array[n-1]);
        System.out.println("Min="+array[0]);
        System.out.println("Mean="+sum/n);

        double median = 0;
        double mid=0;
        if(n%2 == 0)
        {
            int temp=(n/2)-1;
            for(int i=0;i<n;i++)
            {
                if(temp==i || (temp+1)==i)
                {
                    mid=mid+array[i];
                }
            }
            mid=mid/2;
            System.out.println("Median value is: "+mid);
        }
        else
        {
            int temp=(n/2);
            for(int i=0;i<n;i++)
            {
                if(temp==i)
                {
                    mid=array[i];
                    System.out.println("Median value: "+mid);
                }
            }
        }
//Mode calculation
        int i,j,z, tmp, maxCount, modeValue;
        int[] tally=new int[n];
        for(i=0;i<n;i++)
        {
            for(j=0;j<n-i;j++)
            {
                if(j+1!=n)
                {
                    if(array[j]>array[j+1])
                    {
                        tmp=array[j];
                        array[j]=array[j+1];
                        array[j+1]=tmp;
                    }
                }
            }
        }
        for (i = 0; i < n; i++)
        {
            for(z=i+1;z<n;z++)
            {
                if(array[i]==array[z])
                {
                    tally[i]++;
                }
            }
        }
        maxCount = 0;
        modeValue = 0;
        for (i = 0; i <n; i++)
        {
            if (tally[i] > maxCount)
            {
                maxCount = tally[i];
                modeValue = array[i];
            }
        }
        System.out.println("Mode value is :"+modeValue);
    }
}
公共类平均值{
公共静态void main(字符串[]args){
整数n,c,d,交换,和=0;
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入要排序的整数数”);
n=in.nextInt();
int数组[]=新的int[n];
System.out.println(“输入”+n+“整数”);
对于(c=0;c数组[d+1])/*用于降序使用*/
{
交换=数组[d];
数组[d]=数组[d+1];
数组[d+1]=交换;
}
}
}
System.out.println(“排序数组:”);
对于(c=0;c<(n-1);c++){
System.out.println(数组[c]);
}
System.out.println(“Sum=”+Sum);
System.out.println(“Max=“+array[n-1]);
System.out.println(“Min=“+array[0]);
系统输出打印项次(“平均值=”+总和/n);
双中位数=0;
双中值=0;
如果(n%2==0)
{
内部温度=(n/2)-1;

对于(int i=0;i每当您进行涉及有理数的计算时,您可能应该将int转换为double,如下所示:
System.out.println(“Mean=”+((double)sum/n));
这实际上会暂时将它们变成双倍。

输入错误

10 5.8 1.4 2.3 1.4 1.4 1.0 3.2 10.5 11.0 2.0
既然你说:

System.out.println("Enter " + n + " integers");
和5.8,1.4等不是整数

把这个放在第12行:

array[c] = in.next();
而不是:

        array[c] = in.nextInt();
当你说

我试着把所有的Int重写成Double,但那不起作用

这应该只适用于您操作的数据,而不是数组索引。如果这不起作用,请发布错误代码,我们可以帮助您

必须将始终为int类型的数组索引和大小(如:n、c、d等)与将为double类型的值(数组[]、交换、中值、中间值等)分开

int n, c, d;
double swap, sum=0;
...
n = in.nextInt();
double array[] = new double[n];
....

我可以发现两个问题:首先将数组强制转换为
double
数组,然后在.nextDouble()中使用
。第三,在分配状态下,提示输入的
将加倍。最后,数组索引、大小和计数应为
ints

打印排序数组时,代码中存在一个问题,即缺少最后一项

对于(c=0;c<(n-1);c++){

改用

对于(c=0;c 对于双精度问题,不要将int改为double

  • 更改为doubleonly用于存储结果(交换、求和等)的数组和变量以及用于存储数据的临时变量
  • 将用于数组索引(n,d,c)的变量保持为Int
  • 使用nextDouble将实际数据元素读取为Double

    数组[c]=in.nextDouble()

  • 对代码进行最小更改的代码。请为单独的函数(如min()、max()、sort()等)创建方法

    import java.util.Scanner;
    公共班级平均数{
    公共静态void main(字符串[]args){
    双重交换,总和=0;
    int d,c,n;
    扫描仪输入=新扫描仪(系统输入);
    System.out.println(“输入要排序的整数数”);
    n=in.nextInt();
    双数组[]=新的双数组[n];
    System.out.println(“输入”+n+“整数”);
    对于(c=0;c数组[d+1])/*用于降序使用*/
    {
    交换=数组[d];
    数组[d]=数组[d+1];
    数组[d+1]=交换;
    }
    }
    }
    System.out.println(“排序数组:”);
    对于(c=0;c<(n-1);c++){
    System.out.println(数组[c]);
    }
    System.out.println(“Sum=”+Sum);
    System.out.println(“Max=“+array[n-1]);
    System.out.println(“Min=“+array[0]);
    系统输出打印项次(“平均值=”+总和/n);
    双中位数=0;
    双中值=0;
    如果(n%2==0)
    {
    内部温度=(n/2)-1;
    for(int i=0;i“那不起作用”不会告诉我们您遇到了什么问题。您是否也在使用
    nextDouble
    而不是
    nextInt
    ?此外,您的代码不是Javascript,因此请不要将其放在Javascript代码段中,并在将来尝试使用适当缩进来格式化您的代码。(这次另一位用户为您完成了此操作
    int n, c, d;
    double swap, sum=0;
    ...
    n = in.nextInt();
    double array[] = new double[n];
    ....
    
    import java.util.Scanner;
    
    public class Averages{
        public static void main(String []args){
            double swap,sum=0;
            int d, c, n;
            Scanner in = new Scanner(System.in);
            System.out.println("Input number of integers to sort");
            n = in.nextInt();
            double array[] = new double[n];
            System.out.println("Enter " + n + " integers");
            for (c = 0; c < n; c++){
                array[c] = in.nextDouble();
                sum=sum+array[c];
            }
    
            for (c = 0; c < ( n - 1 ); c++) {
                for (d = 0; d < n - c - 1; d++) {
                    if (array[d] > array[d+1]) /* For descending order use < */
                    {
                        swap = array[d];
                        array[d] = array[d+1];
                        array[d+1] = swap;
                    }
                }
            }
            System.out.println("Sorted array:");
            for (c = 0; c < ( n - 1 ); c++) {
                System.out.println(array[c]);
            }
    
    
            System.out.println("Sum="+sum);
            System.out.println("Max="+array[n-1]);
            System.out.println("Min="+array[0]);
            System.out.println("Mean="+sum/n);
    
            double median = 0;
            double mid=0;
            if(n%2 == 0)
            {
                int temp=(n/2)-1;
                for(int i=0;i<n;i++)
                {
                    if(temp==i || (temp+1)==i)
                    {
                        mid=mid+array[i];
                    }
                }
                mid=mid/2;
                System.out.println("Median value is: "+mid);
            }
            else
            {
                int temp=(n/2);
                for(int i=0;i<n;i++)
                {
                    if(temp==i)
                    {
                        mid=array[i];
                        System.out.println("Median value: "+mid);
                    }
                }
            }
    //Mode calculation
            int i,j,z, maxCount;
            double tmp, modeValue;
            int[] tally=new int[n];
            for(i=0;i<n;i++)
            {
                for(j=0;j<n-i;j++)
                {
                    if(j+1!=n)
                    {
                        if(array[j]>array[j+1])
                        {
                            tmp=array[j];
                            array[j]=array[j+1];
                            array[j+1]=tmp;
                        }
                    }
                }
            }
            for (i = 0; i < n; i++)
            {
                for(z=i+1;z<n;z++)
                {
                    if(array[i]==array[z])
                    {
                        tally[i]++;
                    }
                }
            }
            maxCount = 0;
            modeValue = 0;
            for (i = 0; i <n; i++)
            {
                if (tally[i] > maxCount)
                {
                    maxCount = tally[i];
                    modeValue = array[i];
                }
            }
            System.out.println("Mode value is :"+modeValue);
        }
    }