2014-09-03 4 views
-3

У меня возникли проблемы с отображением максимального числа в массиве. Вот мой код. Когда я запускаю его, он дает мне максимум 0. Остальная часть кода работает правильно.Поиск Максимальное количество массива в java

import java.util.Scanner; 

public class Assignment2 
{ 
    // method for the max 
    public static int findMax(int[] numbers, int i) 
    { 
     int max; //max variable 

     if(i > 0) 
     { 
      max = numbers[0]; 
     } 
     else 
     { 
      max = 0; 
     } 

     for(int j = 1; j < i; j++) 
     { 
      if(numbers[i] > max) 
       max = numbers[i]; 
     } 
     return max; 
    } 

    // method to add positive numbers 
    public static int computePositiveSum(int[] numbers, int i) 
    { 
     int total = 0; 

     //check if positive number 
     if (i > 0) 
     { 
      int num = (numbers[i - 1] > 0) ? numbers[i -1]:0; 
      total = num + computePositiveSum(numbers, i - 1); 
      return total; 
     } 
     else 
      return total; 
    } 


    // method to count negative numbers 
    public static int countNegative(int[] numbers, int i) 
    { 
     // if the first input is the same as 
     //length there are no negative numbers 
     if(i == numbers.length) 
     { 
      return 0; 
     } 
     // initialize the number of negatives 
     int sum = countNegative(numbers, i + 1); 
     if(numbers[i] < 0) 
     { 
      sum++; 
     } 
     // return the number of negatives 
     return sum; 
    } 


    public static void main (String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

     int [] numbers = new int[100]; 
     int count = 0; 
     boolean quit = false; 

     //add numbers to array 
     for(int i= 0; i<numbers.length & quit == false; i++) 
     { 
      numbers[i]=input.nextInt(); 

      if(numbers[i] != 0) 
      { 
       count++; 
      } 
      else 
      { 
       quit = true;// exit by entering 0 
      } 
     } 
     System.out.println("The maximum number is " + findMax(numbers, count)); 
     System.out.println("The sum of the positive numbers is " + computePositiveSum(numbers, count)); 
     System.out.println("The total number of negative numbers is " + countNegative(numbers, 0)); 
    } 
} 
+0

Можете ли вы предоставить более подробную информацию? – lewisjb

+0

Что должен сделать параметр «i» метода findMax? –

+0

Мне нужно напечатать максимум входных данных, которые вы подключаете к массиву. – jrsk8chivas

ответ

2

Вы используете номер i, количество номеров введен, как индекс в массиве numbers при определении макс, вместо j, фактический индекс вашего цикла. Изменение

if(numbers[i] > max) 
    max = numbers[i]; 

в

if(numbers[j] > max) 
    max = numbers[j]; 

Это сбивает с толку, чтобы выбрать имя i, который обычно используется в качестве индекса петли, для подсчета. Это было бы более понятным и менее запутанным, чтобы переименовать i в count.

+0

Да, здесь очень важны соглашения об именовании переменных. +1 – MadProgrammer

+0

Спасибо, что это сработало! :) Наверное, я перепутался с переменной. Еще раз спасибо – jrsk8chivas

-1
int a[] = { 1, 6, 7, 56, 5, 19, 26, 17 }; 

    int max = a[0]; 
    for (int i = 1; i < a.length; i++) { 

     if (max < a[i]) { 
      max = a[i]; 

     } 
     else { 
      max = max; 
     } 

    } 
    System.out.println(max); 
} 

}

+0

спасибо, что знаю, что это будет работать, но это было задание для класса, и мы не могли использовать arraylists, однако с этим методом было бы проще. – jrsk8chivas

Смежные вопросы