🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
3 messages
3 total messages Started by Christof Laeremans Sat, 12 Oct 2002 10:18
Java IOExceptions
#7102
Author: Christof Laeremans
Date: Sat, 12 Oct 2002 10:18
19 lines
1555 bytes
Hallo,

Voor een oefening om met breuken te werken moeten we gaan testen als de
noemer nul is en dus als uitkomst ongeldig geven, maar ... Alle breuken
moeten ingelezen worden in de vorm van bv. 1/9 (String) dus moet die
IOException ergens anders gebeuren.

Ik dacht aan de eerste bewerking waar je gaat delen door de noemer in mijn
geval de functie ggd maar is dit de juiste plaats ?

Kan je nog op een andere manier die IOException gooien ?

Kan er iemand mij soms enkele tips geven ?

Alvast bedankt,

Mvg,

Christof Laeremans
Re: Java IOExceptions
#7104
Author: MisterJ
Date: Sat, 12 Oct 2002 11:25
30 lines
2293 bytes
Christof Laeremans wrote:

> Hallo,
> 
> Voor een oefening om met breuken te werken moeten we gaan testen als de
> noemer nul is en dus als uitkomst ongeldig geven, maar ... Alle breuken
> moeten ingelezen worden in de vorm van bv. 1/9 (String) dus moet die
> IOException ergens anders gebeuren.
> 
> Ik dacht aan de eerste bewerking waar je gaat delen door de noemer in mijn
> geval de functie ggd maar is dit de juiste plaats ?

Als de oefening effectief zegt dat het een IOException moet zijn, lijkt
het mij logischer om het tijdens (net na) het inlezen (de I van IO dus)
van de string te doen. Je zult die string toch moeten "parsen" om de
teller en de noemer er uit te halen en in een int te stoppen ofzo, je kan
tevens nakijken of de noemer nul is, en zo nodig een IOException gooien.

Als het niet per se een IOException moet zijn, zou ik het echter anders
doen. Ik zou gewoon alles parsen en de deling uitvoeren. En dan de
eventuele fout die bij deling door nul kan optreden opvangen...

> Kan je nog op een andere manier die IOException gooien ?

uiteraard, je kunt tientallen manieren uitvinden, maar daarom zijn ze niet
allemaal even logisch en consistent.

-- 
groeten,
MisterJ
Re: Java IOExceptions
#7105
Author: Koen Hautekeete
Date: Sat, 12 Oct 2002 12:50
137 lines
4412 bytes
On Sat, 12 Oct 2002 12:18:08 +0200, Christof  Laeremans
<christof_laeremans@hotmail.com> wrote:

>Hallo,
>
>Voor een oefening om met breuken te werken moeten we gaan testen als de
>noemer nul is en dus als uitkomst ongeldig geven, maar ... Alle breuken
>moeten ingelezen worden in de vorm van bv. 1/9 (String) dus moet die
>IOException ergens anders gebeuren.

Ik vermoed dat je een ArithmeticException bedoeld?
(ArithmeticException: Thrown when an exceptional arithmetic condition
has occurred. For example, an integer "divide by zero" throws an
instance of this class.)

>Ik dacht aan de eerste bewerking waar je gaat delen door de noemer in mijn
>geval de functie ggd maar is dit de juiste plaats ?
>
>Kan je nog op een andere manier die IOException gooien ?
>
>Kan er iemand mij soms enkele tips geven ?

Zoals je ziet gebeurt de afhandeling van het al dan niet geldig zijn
van de String volledig door de klasse Fraction. Zo wordt bvb door de
method parseFraction een NumberFormatException gethrowed als de String
"foutief" is...

import java.util.StringTokenizer;

public class Fraction
{
  public static char fractionDelimiter = '/';

  private int numerator = -1;
  private int denominator = -1;

  public Fraction()
  {
  }

  public Fraction(int aNumerator, int aDenominator)
  {
    this.setNumerator(aNumerator);
    this.setDenominator(aDenominator);
  }

  public static Fraction parseFraction(String aFraction)
    throws NumberFormatException
  {
    Fraction fraction = new Fraction();
    StringTokenizer st =
      new StringTokenizer(
        aFraction,
        String.valueOf(Fraction.fractionDelimiter));

    if (st.countTokens() == 2)
    {
      fraction.setNumerator(Integer.parseInt(st.nextToken()));
      fraction.setDenominator(Integer.parseInt(st.nextToken()));
    }
    else
      if (st.countTokens() == 1)
      {
        if (aFraction.charAt(0) == Fraction.fractionDelimiter)
        {
          fraction.setNumerator(0);
          fraction.setDenominator(Integer.parseInt(st.nextToken()));
        }
        else
        {
          fraction.setNumerator(Integer.parseInt(st.nextToken()));
          fraction.setDenominator(1);
        }
      }
      else
      {
        throw new NumberFormatException("Not a valid fraction: " +
aFraction);
      }

    return fraction;
  }
  /**
   * Returns the denominator.
   * @return int
   */
  public int getDenominator()
  {
    return denominator;
  }

  /**
   * Returns the numerator.
   * @return int
   */
  public int getNumerator()
  {
    return numerator;
  }

  /**
   * Sets the denominator.
   * @param denominator The denominator to set
   */
  public void setDenominator(int denominator)
  {
    this.denominator = denominator;
  }

  /**
   * Sets the numerator.
   * @param numerator The numerator to set
   */
  public void setNumerator(int numerator)
  {
    this.numerator = numerator;
  }

  public double divideNumeratorByDenominator()
  {
    double returnValue = -1;
    if (this.getDenominator() == 0)
    {
      throw new ArithmeticException("Denominator = 0");
    }
    else
    {
      returnValue = this.getNumerator() / this.getDenominator();
    }
    return returnValue;
  }
}


mvg

Koen Hautekeete
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads