maximum przedostatnie bez tablicy

0

Witam,
Od jakiegoś czasu walczę z takim może banalnym zadaniem, ale cały czas źle wychodzi. Oto treść:
" Napisać program, który nie używając tablic wyznacza drugą co do wielkości (lub przedostatnią) liczbę
w ciągu. Ciąg zakończony jest liczbą 123, która nie jest brana pod uwagę w obliczeniach. "
A to kod:

public class Ćwiczenie2_2 {
public static void main(String[] args) {
int i=0; int n=0; int j=0; int z=0;
int max=-2000; int max0=-2000;int m=0;

         //   System.out.println("i " + i);
      
            
               Scanner odczyt = new Scanner(System.in);
               
           while ( i!=123)
       {        
            System.out.println("Podaj liczbe pierwsze while");
             i= odczyt.nextInt();
              
              
               if (i==123)
               {
                 //  i=123;
               //   if (max0<n)
                //   {
                //   max=n;
                          System.out.println("koniec" ); 
                //   }
               }
               else if (i!=123)
               {
                   do
                   {
                       
                   
              
                      System.out.println("przypisujemy " );
                  n=i;
              if (max0<n)
               {
                   z=n;
                   
                   max0=n;
                    System.out.println("maximum0 wewnatrz pętli " + max0);
                    
               }
                
                  //    System.out.println("Podaj liczbe ");
                do  
                {
                   System.out.println("Podaj liczbe ");
                     j= odczyt.nextInt();
                    
                    if (j==123)
                    {
                        i=123;
                      //z=123;
                    }
                    else {
                        m=j;
                        max=m;
                        if(max<max0)
                        {
                            max=max0;
                            max0=j;
                        }
                        
                          System.out.println("maximum0 wewnatrz pętli " + max0 +" " + max);
                        
                    }
                
                }  while ( j!=123); 
                                

           
                   System.out.println("maximum0  " + max0);
       
           System.out.println("maximum  " + max);    
              
       }  while (n!=123);
       }
       
  
       }}}

//Co tu jest źle z tymi pętlami?

0

public class Ćwiczenie2_2 {
public static void main(String[] args) {
int i=0; int n=0; int j=0; int z=0;
int max=-2000; int max0=-2000;int m=0;

         //   System.out.println("i " + i);
      
            
               Scanner odczyt = new Scanner(System.in);
               
           while ( i!=123)
       {        
            System.out.println("Podaj liczbe pierwsze while");
             i= odczyt.nextInt();
              
              
               if (i==123)
               {
                 //  i=123;
               //   if (max0<n)
                //   {
                //   max=n;
                          System.out.println("koniec" ); 
                //   }
               }
               else if (i!=123)
               {
                   do
                   {
                       
                   
              
                      System.out.println("przypisujemy " );
                  n=i;
              if (max0<n)
               {
                   z=n;
                   
                   max0=n;
                    System.out.println("maximum0 wewnatrz pętli " + max0);
                    
               }
                
                  //    System.out.println("Podaj liczbe ");
                do  
                {
                   System.out.println("Podaj liczbe ");
                     j= odczyt.nextInt();
                    
                    if (j==123)
                    {
                        i=123;
                      //z=123;
                    }
                    else {
                        m=j;
                        max=m;
                        if(max<max0)
                        {
                            max=max0;
                            max0=j;
                        }
                        
                          System.out.println("maximum0 wewnatrz pętli " + max0 +" " + max);
                        
                    }
                
                }  while ( j!=123); 
                                

           
                   System.out.println("maximum0  " + max0);
       
           System.out.println("maximum  " + max);    
              
       }  while (n!=123);
       }
       
  
       }}}
2

Napisz to jeszcze raz, tylko tym razem na trzeźwo.
Wtedy będzie dobrze.


Po prostu iteruj sobie po wejściu zwyczajnie poszukując max.
Jeśli znajdziesz maxa zastępującego dotychczasowego, to najpierw przypisz dotychczasowego maxa do innej zmiennej,a dopiero potem zapisz nowego maksa w miejsce dotychczasowego maxa.

3

Nie wiem co jest w tym trudnego. Dwie zmienne, max i max - 1, O(n) i po sprawie ;d

1 użytkowników online, w tym zalogowanych: 0, gości: 1