Так что у меня проблемы с назначением. Это вопрос, предложенный нам: Напишите свой код в файле Averages.java. Ответы должны выводиться с использованием модуля ввода-вывода, как описано выше.Как преобразовать Int в Double в моем назначении массива
Ваше задание - рассчитать средние значения, учитывая список входных данных. Сначала спросите пользователей, сколько номеров (удваивает) она войдет. Затем запросите для этого много цифр.
Затем выведите следующие значения min, max, sum, mean, median, mode - в этом порядке. Для целей этого упражнения вы можете предположить, что существует либо один режим, либо нет режимов. (например, в {1,3,3,4,4}, нет режима, так как есть 2 3 и 2 4, но {1,3,3,4} имеет режим 3). Если режим не существует, вы можете вывести строку «none».
Медиана определяется путем нахождения среднего числа. Если такой номер не существует, он рассчитывается путем принятия среднего значения из двух средних чисел.
Подсказка: для выполнения медианных/режимов расчетов может оказаться полезным сохранить список чисел в некотором упорядоченном порядке. т. е. на каждой вставке, поместите номер в «правильное» место.
Пример (примечание комментировало описание не должно быть напечатано - они только для вашей информации):
10
5.8
1.4
2.3
1.4
1.4
1.0
3.2
10.5
11.0
2.0
RESULT: 1.0 //min
RESULT: 11.0 //max
RESULT: 40.0 //sum
RESULT: 4.0 //mean
RESULT: 2.15 //median
RESULT: 1.4 //mode
Это мой текущий код:
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);
}
}
Как вы можете видеть из моего кода, он может запускать только Int's Double. Я пробовал переписывать все Int как Double, но это не работает. Может ли кто-нибудь помочь мне с тем, чтобы исправить мою программу, чтобы принимать и выводить double?
Это то, что я пробовал:
import java.util.Scanner;
public class Averages{
public static void main(String []args){
double n, c, d, swap,sum=0;
Scanner in = new Scanner(System.in);
System.out.println("Input number of Doubles to sort");
n = in.nextDouble();
double array[] = new double[n];
System.out.println("Enter " + n + " doubles");
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)
{
double temp=(n/2)-1;
for(double 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
{
double temp=(n/2);
for(int i=0;i<n;i++)
{
if(temp==i)
{
mid=array[i];
System.out.println("Median value: "+mid);
}
}
}
//Mode calculation
double i,j,z, tmp, maxCount, modeValue;
double[] tally=new double[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);
}
}
«который не работает» не говорит нам * ничего * о том, что проблемы вы столкнулись. Вы также используете 'nextDouble' вместо' nextInt'? Кроме того, ваш код не является Javascript, поэтому, пожалуйста, не помещайте его в фрагмент Javascript и, пожалуйста, попробуйте отформатировать свой код с соответствующим отступом в будущем. (Другой пользователь сделал это для вас на этот раз ...) –
Также поместите каждую операцию (max, min, average, sum) в другую функцию и заставьте ее вернуть результат. Вызовите функции в основном и распечатайте результаты там. Это сделает код более читаемым. –
Я говорю, что «это не работает» в том смысле, что я знаю, что что-то не работает. Вопрос, который я задаю, - это как преобразовать массив, который вводит/выводит ints в массив, который вставляет/выдает удваивается. Код работает на 100% с ints как есть, я просто не знаю, как заставить его работать с удвоениями. – Blake