Итак, у меня есть эта программа, над которой я работал, для чего требуется использование рекурсивных методов, а номера массивов должны быть массивом, а не массивом ArrayList. Цель программы - разрешить пользователям вводить парные разряды до тех пор, пока они не наберут 0. Двойники должны быть сохранены в массив, и я должен использовать рекурсивные методы для поиска max, числа отрицательных чисел и суммы положительных чисел. Проблема, с которой я сталкиваюсь, заключается в том, когда программа выходит и печатает результаты, которые она печатает max и sum как 0 вместо ответа. Я пробовал все, о чем я мог думать, и не могу заставить его работать. Если бы кто-то мог рассказать мне, в чем моя проблема, это будет оценено ... Спасибо.Возвращаемые числа, но они печатаются как 0
примечание: сначала я помещал max, negative и sum в метод assign9, а также пробовал печатать из основного метода, но ничего не работает.
import java.util.*;
import java.text.*;;
public class Assignment9 {
//main method initializes variables then calls method assignment9
public static void main(String[] args)
{
int count = 0;
ArrayList<Double> help = new ArrayList<Double>();
double max = 0;
int negative = 0;
double sum = 0;
assignment9(help, count, max, negative, sum);
}//end main
//adds user input to array until 0 is entered; it then calls other methods
public static void assignment9(ArrayList<Double> help, int count, double max, int negative, double sum)
{
DecimalFormat fmt = new DecimalFormat("#.##");
double input;
Scanner scan = new Scanner(System.in);
input = scan.nextInt();
if (input == 0)
{
double[] numbers = new double[count];
for(int i = 0; i < numbers.length; i++)
{
numbers[i] = help.get(i);
}
findMax(numbers, count-1, max);
countNegative(numbers, count-1, negative);
computeSumPositive(numbers, count-1, sum);
}else{
help.add(input);
count++;
assignment9(help, count, max, negative, sum);
}//end if
System.out.println("The maximum number is " + fmt.format(max));
System.out.println("The total number of negative numbers is " + negative);
System.out.println("The sum of positive numbers is " + fmt.format(sum));
System.exit(0);
}//end assignment9
//compares elements of array to find the max until count = -1
public static double findMax(double[] numbers, int count, double max)
{
if (count == -1)
{
return max;
}else if(numbers[count] > max){
max = numbers[count];
count--;
findMax(numbers, count, max);
}//end if
return max;
}//end findMax
public static int countNegative(double[] numbers, int count, int negative)
{
if(count == -1)
{
return negative;
}else if(numbers[count] < 0){
negative++;
count--;
countNegative(numbers, count, negative);
}
return negative;
}//end countNegative
public static double computeSumPositive(double[] numbers, int count, double sum)
{
if(count == -1)
{
return sum;
}else{
sum = sum + numbers[count];
count--;
computeSumPositive(numbers, count, sum);
return sum;
}
}//end computeSumPositive
}//end class
ли «Я попробовал почти все, что я мог думать о» включают в себя использование отладчика? – Axel
Я не уверен, что это такое ... Я довольно новичок в программировании, но я нажал в затмение, затем отлаживаю верхнюю часть –
. Следующее, что вам нужно сделать - даже если ответ tieTYT решает вашу проблему ...; -) Если вы используете eclipse, прочитайте это: http://agile.csc.ncsu.edu/SEMaterials/tutorials/eclipse-debugger/. – Axel