Java programozás – Növények megoldása (nem teljes)

A feladat megoldása még nem teljes!

Csak akkor olvass tovább, ha a növények 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_novenyek;

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

/**
 *
 * @author http://webotlet.hu
 */
package webotlet_novenyek;

public class Noveny
{

  private String nev;
  private String miert;
  private int kezd;
  private int veg;
  private int gyido;
  private int[] honapok;

  public Noveny( String[] tomb )
  {
    nev = tomb[0];
    miert = tomb[1];
    kezd = Integer.parseInt( tomb[2] );
    veg = Integer.parseInt( tomb[3] );
    if( kezd <= veg )
    {
      gyido = veg - kezd + 1;
    }
    else
    {
      gyido = 13 - kezd + veg;
    }

    honapok = ekkorGyujtik();
  }

  public String getNev()
  {
    return nev;
  }

  public String getMiert()
  {
    return miert;
  }

  public int getKezd()
  {
    return kezd;
  }

  public int getVeg()
  {
    return veg;
  }

  public int getGyido()
  {
    return gyido;
  }

  public int[] getHonapok()
  {
    return honapok;
  }

  private int[] ekkorGyujtik()
  {
    int[] tomb = new int[gyido];
    int db = 0;
    if( kezd <= veg )
    {
      for (int i = kezd; i <= veg; i++)
      {
        tomb[db++] = i;
      }
    }
    else
    {
      for (int i = kezd; i < 13; i++)
      {
        tomb[db++] = i;
      }

      for (int i = 1; i <= veg; i++)
      {
        tomb[db++] = i;
      }
    }
    return tomb;
  }

  public String ekkorGyujtikString()
  {
    StringBuilder sb = new StringBuilder();
    for (int i : honapok)
    {
      sb.append( i + " " );
    }
    return sb.toString();
  }

  public boolean gyujtikEkkor( int honap )
  {
    return honap >= kezd && honap <= veg;
  }

  @Override
  public String toString()
  {
    return "Noveny{" + "nev=" + nev + ", miert=" + miert +
           ", kezd=" + kezd + ", veg=" + veg + ", gyido=" +
           gyido + ", honapok=" + ekkorGyujtikString() + '}';
  }

}

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

/**
 *
 * @author http://webotlet.hu
 */
package webotlet_novenyek;

import java.io.*;

public class Webotlet_novenyek
{

  public static void main( String[] args )
  {
    RandomAccessFile raf;
    String sor;
    Noveny[] novenyek;
    int db;
    try
    {
// 1. feladat
      raf = new RandomAccessFile( "noveny.txt", "r" );
// sorok megszamlalasa
      db = 0;
      for (sor = raf.readLine(); sor != null; sor = raf.readLine())
      {
        db++;
      }
      novenyek = new Noveny[db];
// adatok beolvasasa
      db = 0;
      raf.seek( 0 );
      for (sor = raf.readLine(); sor != null; sor = raf.readLine())
      {
        novenyek[db++] = new Noveny( sor.split( ";" ) );
      }
      /*
       for( Noveny n : novenyek)
       {
       System.out.println( n.toString() );
       }
       */
// 2. feladat
      System.out.println( "\n2. feladat" );
      for (Noveny n : novenyek)
      {
        if( n.getNev().equalsIgnoreCase( "gyongyvirag" ) )
        {
          System.out.println( n.getMiert() );
          break;
        }
      }
// 3. feladat
      System.out.println( "\n3. feladat" );
      int leveldb = 0;
      for (Noveny n : novenyek)
      {
        if( n.getMiert().equals( "level" ) )
        {
          leveldb++;
        }
      }
      System.out.println( "Ennyi novenyt gyujtenek a leveleert: "
        + leveldb );
// 4. feladat
      System.out.println( "\n4. feladat" );
//   0 1 2 3 4 5 6 7 8 9 10 11 12
// { 0,0,0,0,0,1,2,0,0,0, 0, 0, 0 }
      int[] honapKezdDb = new int[12];
      for (int i = 0; i < novenyek.length; i++)
      {
        honapKezdDb[novenyek[i].getKezd() - 1]++;
      }

      int kezdMax = 0;
      for (int i = 1; i < honapKezdDb.length; i++)
      {
        if( honapKezdDb[i] > honapKezdDb[kezdMax] )
        {
          kezdMax = i;
        }
      }

      for (int i = 0; i < honapKezdDb.length; i++)
      {
        if( honapKezdDb[i] == honapKezdDb[kezdMax] )
        {
          System.out.println( "A " + (i + 1) + ". honapban kezdik "
            + "gyujteni a legtobb novenyt." );
        }
      }

// 5. feladat
      System.out.println( "\n5. feladat" );
      for (int i = 1; i < honapKezdDb.length; i++)
      {
        if( honapKezdDb[i] == 0 )
        {
          System.out.println( "A " + (i + 1) + ". honapban semmit "
            + "nem kezdenek gyujteni." );
        }
      }

// 6. feladat
      System.out.println( "\n6. feladat" );
      int egyszodb = 0;
      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getNev().contains( " " ) )
        {
          egyszodb++;
        }
      }
      System.out.println( "Ennyi noveny neve all egy szobol: " + egyszodb );

// 7. feladat
      System.out.println( "\n7. feladat" );
      int osszel = 0;
      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getKezd() >= 9 && novenyek[i].getKezd() <= 11 )
        {
          osszel++;
        }
      }
      System.out.println( "Ennyi novenyt gyujtenek kezdenek "
        + "osszel gyujteni: " + osszel );

// 8. feladat
      System.out.println( "\n8. feladat" );
      int nyarElejeDb = 0;
      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getKezd() == 6 )
        {
          nyarElejeDb++;
        }
      }
      System.out.println( "Ennyi novenyt gyujtenek a nyar elejetol: "
        + nyarElejeDb );

// 9. feladat
      System.out.println( "\n9. feladat" );
      int maxGyIdo = 0;
      for (int i = 1; i < novenyek.length; i++)
      {
        if( novenyek[i].getGyido() > novenyek[maxGyIdo].getGyido() )
        {
          maxGyIdo = i;
        }
      }

      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getGyido() == novenyek[maxGyIdo].getGyido() )
        {
          System.out.println( novenyek[i].getNev() );
        }
      }

// 10. feladat
      System.out.println( "\n10. feladat" );
      String csalan = "";
      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getNev().equalsIgnoreCase( "csalan" ) )
        {
          csalan = novenyek[i].getMiert();
          break;
        }
      }

      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getMiert().equals( csalan )
          && !novenyek[i].getNev().equalsIgnoreCase( "csalan" ) )
        {
          System.out.println( novenyek[i].getNev() );
        }
      }

// 11. feladat
      System.out.println( "\n11. feladat" );
      int viragdb = 0;
      for (int i = 0; i < novenyek.length; i++)
      {
        if( novenyek[i].getMiert().toLowerCase().contains( "virag" ) )
        {
          viragdb++;
        }
      }
      System.out.println( "Ennyi novenyt gyujtenek viraggal "
        + "kapcsolatban: " + viragdb );

// 13. feladat
      boolean van = false;
      System.out.println( "\n13. feladat" );
      for (int i = 0; i < honapKezdDb.length; i++)
      {
        if( honapKezdDb[i] == 0 )
        {
          van = true;
          break;
        }
      }

      if( van )
      {
        System.out.println( "Van olyan honap, amikor semmit nem "
          + "kezdenek gyujteni." );
      }
      else
      {
        System.out.println( "Nincs olyan honap, amikor semmit "
          + "nem kezdenek gyujteni." );
      }

// 14. feladat
      System.out.println( "\n14. feladat" );
      int[] honapGyujtDb = new int[12];

      for (int i = 0; i < novenyek.length; i++)
      {
        for (int j = 0; j < novenyek[i].getHonapok().length; j++)
        {
          honapGyujtDb[novenyek[i].getHonapok()[j] - 1]++;
        }
      }

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

      for (int i = 0; i < honapGyujtDb.length; i++)
      {
        if( honapGyujtDb[i] == honapGyujtDb[honapGyujtMax] )
        {
          System.out.println( (i + 1) + ". honapban gyujtik a legtobb "
            + "fajta novenyt." );
        }
      }

// 15. feladat
      System.out.println( "\n15. feladat" );

      Noveny csere;
      for (int i = 0; i < novenyek.length - 1; i++)
      {
        for (int j = i + 1; j < novenyek.length; j++)
        {
          if( novenyek[i].getKezd() > novenyek[j].getKezd() )
          {
            csere = novenyek[i];
            novenyek[i] = novenyek[j];
            novenyek[j] = csere;
          }
        }
      }
      for (Noveny n : novenyek)
      {
        System.out.println( n.toString() );
      }
    }
    catch ( IOException e )
    {
      System.out.println( "HIBA" );
    }
  }
}

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

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

*

Ez a weboldal az Akismet szolgáltatását használja a spam kiszűrésére. Tudjunk meg többet arról, hogyan dolgozzák fel a hozzászólásunk adatait..