2016-10-20 4 views
-1

В этой ситуации массив nums имеет неопределенное количество целых чисел в нем, и я пытаюсь найти самый большой и распечатать его. Когда я делаю это, всегда печатается как 0, потому что все, что происходит в цикле, не влияет на значение вне его. Кто-нибудь знает, как это исправить?Изменение переменной вне цикла for из цикла

int a = 0; 
for(int i=0;i>nums.length;i++){ 
    if(nums[i]>a) 
    a=nums[i]; 
    i++;} 
System.out.print(a); 
+4

использование я

+2

был двойной инкрементации из 'i' в итерация? – Bathsheba

+1

@PavneetSingh: ИМХО, нет никакого вреда в том, чтобы поставить это как ответ и разобраться с двойным 'i ++'. – Bathsheba

ответ

4

Этот код имеет две ошибки:

  1. петля никогда не будет выполняться, поскольку i начнет со значением менее nums.length
  2. вы увеличиваем индекс цикла в два раза!

Ваш цикл должен выглядеть следующим образом:

for(int i=0;i<nums.length;i++){ 
    if(nums[i]>a) 
    a=nums[i]; 
} 
0

Вот решение вашей проблемы:

import java.util.*; 

class Main { 
    public static void main(String[] args) { 
    List<Integer> arrayList = new ArrayList<Integer>(); 
    Random r = new Random(); 

    // Fill the ArrayList with integer RandomNumbers 
    int size = r.nextInt(100); 
    int maxValue = 0; 
    for(int i=0 ; i < size ; i++){ 
     int value = r.nextInt(1000); 
     System.out.println("Current value: " + value); 
     arrayList.add(value); 
     if(value > maxValue) 
      maxValue = value; 
    } 

    System.out.println("Max: " + maxValue); 
    // If u want to shuffle the list 
    Collections.shuffle(arrayList); 
    } 
} 
Смежные вопросы