Java programozás – Időjárás megoldása

Csak akkor olvass tovább, ha az időjárás feladatot megoldottad, vagy nem sikerült megoldani.

A letölthető tömörített állományban megtalálod a NetBeans-ben megnyitható projectet. Amennyiben Geany szerkesztővel kívánod megtekinteni a megoldást, akkor töröld ki a források elejéről a következő sorokat:

package webotlet_idojaras;

A megoldásban két osztály található. Az Ido osztály felelős az adattárolásért, a Webotlet_idojaras pedig a vezérlőprogram, mely a forrás beolvasását, valamint a feladatok megoldását tartalmazza.

Ido osztály az adattárolásra:

/**
 *
 * @author http://webotlet.hu
 */

package webotlet_idojaras;

public class Ido
{
  private String idokep;
  private int hom;
  private int szelirany;
  private int szelero;
  private int legnyomas;
  private double para;
  private int ora;

  public Ido( String[] tomb, int db )
  {
    idokep = tomb[0];
    hom = Integer.parseInt(tomb[1]);
    szelirany = Integer.parseInt(tomb[2]);
    szelero = Integer.parseInt(tomb[3]);
    legnyomas = Integer.parseInt(tomb[4]);
    para = Double.parseDouble(tomb[5]);
    ora = db;
  }

  public String getIdokep()
  {
    return idokep;
  }

  public int getHom()
  {
    return hom;
  }

  public int getSzelirany()
  {
    return szelirany;
  }

  public int getSzelero()
  {
    return szelero;
  }

  public int getLegnyomas()
  {
    return legnyomas;
  }

  public double getPara()
  {
    return para;
  }

  public int getOra()
  {
    return ora;
  }

  @Override
  public String toString()
  {
    return "Ido{" + "idokep=" + idokep + ", hom=" + hom +
           ", szelirany=" + szelirany + ", szelero=" +
           szelero + ", legnyomas=" + legnyomas +
           ", para=" +para + ", ora=" + ora + '}';
  }
}

A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:

/**
 *
 * @author http://webotlet.hu
 */

package webotlet_idojaras;

import java.io.*;

public class Webotlet_idojaras
{
  public static void main(String[] args)
  {
    int db;
    String sor;
    RandomAccessFile raf;
    Ido[] idok;
    try
    {
// 1. feladat
      raf = new RandomAccessFile("idojaras.csv","r");
      idok = new Ido[24];
      db = 0;
      raf.readLine();
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        idok[db] = new Ido( sor.split(";"), db );
        db++;
      }

      raf.close();

/* kiiratas, hogy az adatokat megfeleloen beolvastam
      for( Ido o : idok )
      {
        System.out.println( o.toString() );
      }
*/

// 2. feladat
      System.out.println( "\n2. feladat" );
      int homax = 0;
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getHom() > idok[homax].getHom() )
        {
          homax = i;
        }
      }
      System.out.println( idok[homax].getOra()+" orakor volt a legmelegebb." );

// 3. feladat
      System.out.println( "\n3. feladat" );
      int maxszel = 0;
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getSzelero() > idok[maxszel].getSzelero() )
        {
          maxszel = i;
        }
      }
// tobb maximum eseten ertelemszeruen az elsonek az idopontjat kapjuk meg
      System.out.println( idok[maxszel].getOra()+" orakor fujt a legerosebb szel." );

// 4. feladat
      System.out.println( "\n4. feladat" );
      System.out.println( "Ezekben az orakban fujt ENY-i szel:" );
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getSzelirany() > 270 && idok[i].getSzelirany() < 360 )
        {
          System.out.println( idok[i].getOra()+" ora" );
        }
      }

// 5. feladat
      System.out.println( "\n5. feladat" );
      int borultdb = 0;
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getIdokep().equalsIgnoreCase("borult") )
        {
          borultdb++;
        }
      }
      System.out.println( borultdb+" alkalommal volt borult az eg." );

// 6. feladat
      System.out.println( "\n6. feladat" );
      int homin = 0;
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getHom() < idok[homin].getHom() )
        {
          homin = i;
        }
      }
      System.out.println( idok[homax].getHom() - idok[homin].getHom()+" fok a napi hoingas." );

// 7. feladat
      System.out.println( "\n7. feladat" );
      int fagyp = 0;
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getHom() == 0 )
        {
          fagyp++;
        }
      }
      System.out.println( fagyp+" alkalommal volt fagypont." );
      
// 8. feladat
      System.out.println( "\n8. feladat" );
      int fagyott = 0;
      if( idok[0].getHom() < 0 ) fagyott = 1;
      
      for( int i = 1; i < idok.length; i++ )
      {
        if( idok[i].getHom() < 0 && idok[i-1].getHom() >= 0 )
        {
          fagyott++;
        }
      }
      System.out.println( fagyott+" alkalommal fagyott." );
// 9. feladat
      System.out.println( "\n9. feladat" );
      int emel = 0;
      for( int i = 1; i < idok.length; i++ )
      {
        if( idok[i].getHom() > idok[i-1].getHom() )
        {
          emel++;
        }
      }
      System.out.println( emel+" alkalommal emelkedett a homerseklet." );

// 10. feladat
      System.out.println( "\n10. feladat" );
      String irany = null;
      if( idok[homax].getSzelirany() == 0 ) irany = "E";
      else if( idok[homax].getSzelirany() > 0 && idok[homax].getSzelirany() < 90 ) irany = "EK";
      else if( idok[homax].getSzelirany() == 90 ) irany = "K";
      else if( idok[homax].getSzelirany() >90 && idok[homax].getSzelirany() < 180 ) irany = "DK";
      else if( idok[homax].getSzelirany() == 180 ) irany = "D";
      else if( idok[homax].getSzelirany() > 180 && idok[homax].getSzelirany() < 270 ) irany = "DNY";
      else if( idok[homax].getSzelirany() == 270 ) irany = "NY";
      else irany = "ENY";
      System.out.println( irany+"-rol fujt a szel, amikor a legmelegebb volt." );
    
// 11. feladat
      System.out.println( "\n11. feladat" );
      int napdb = 0;
      int napossz = 0;
      for( int i = 0; i < idok.length; i++ )
      {
        if( idok[i].getOra() >= 8 && idok[i].getOra() <= 16 )
        {
          napdb++;
          napossz += idok[i].getHom();
        }
      }
      System.out.println( "A nappali atlaghomerseklet: "+(double)napossz/napdb );
    }
    catch( IOException e )
    {
      System.err.println( "HIBA" );
    }
  }
}

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .