Java 如何在数组赋值中将Int转换为Double
因此,我的一项任务给我带来了一些麻烦。这是向我们提出的问题: 在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.每次插入时,将数字放在“正确”的位置 示例(注意:不应打印注释说明-它们仅供您参考): 这是我当前的代码: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)。如果不存在模式,则可以输出字符串“
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);
}
}