Итак, отказ от ответственности, это для класса, но я уже отправил домашнее задание и обратился к профессору за помощью, поэтому я не обманываю и не прошу кого-то сделать мою домашнюю работу. Я потратил часы, просматривая этот сайт, в процессе.
Я пытаюсь получить пользовательский ввод до 52 раз, сложить их все вместе, а затем усреднить сумму.
Я создал этот метод, чтобы позволить пользователю вводить свою еженедельную прибыль на основе ввода переменной «Продажи» далее в коде. Я думал, что предел в 52 будет хорошим, поскольку он позволит человеку в среднем 2 недели, месяц, 6 месяцев и т. Д. c, например, если он пытается составить бюджет или найти приблизительный годовой доход.
//new method
public static void computeAverageSalesProfit() {
//new scanner object in method
Scanner input = new Scanner(System.in);
//new object
Sales AvgProfit = new Sales();
//prompt for input
System.out.println("Please enter weekly profits, up to 52 weeks. When finished, enter '-1.'");
//value to store input, and test against
double value = 0;
//new double array to sum together and average out
double[] sum2 = new double[52];
//while loop of doom
while(value >= 0) {
for (int i=0; i<sum2.length; i++) {
value = input.nextDouble();
sum2[i] = value + 0;
}
}
double WeeklyProfits = 0;
for (int i=0; i<sum2.length; i++) {
WeeklyProfits = sum2[i] / sum2.length;
}
AvgProfit.setWeeklyProfits(WeeklyProfits);
System.out.printf("Your average profits are %.2f", AvgProfit.getWeeklyProfits());
}
Это код, которым я закончил на ночь, и я не могу понять, как закончить while l oop. Первоначально у меня не было переменной value, но я подумал, что проверка ее перед итерацией sum2 позволит мне закрыть ее. Когда я запускаю программу, она принимает вводимые пользователем данные, но никогда не заканчивается, пока я не достигну 52 итераций. Я также пробовал использовать «0000» в логическом выражении, но это тоже не сработало.
Я также пробовал не устанавливать переменную значения, я пробовал все, что мог придумать, и могу найти на инте rnet. Я пробовал использовать переменную значения и без нее, используя простой двойной (а не массив). Я даже пробовал использовать String, используя логическое выражение (good = true / false, while (! / Good), et c, но мне не удалось преобразовать его в двойное и усреднить.
I Я полностью сбит с толку, и у меня болит голова. Я буду очень признателен за любую помощь или идеи, которыми вы можете поделиться. Спасибо.
О, и у меня есть время oop в другой части мой код действительно работает, но я не думаю, что этот работает так же. Думаю, я либо слишком много обдумываю его, либо просто упускаю что-то очень очевидное.
//Check Year length separate, keeping original code mostly intact
public static boolean isValid(String input)
{
//Does it have 4 digits?
if(input.length() != 4)
return false;
// Is it a number ?
try
{
Integer i = Integer.parseInt(input);
}
catch(NumberFormatException e)
{
return false;
}
// Passed all checks and is valid
return true;
}