Thread View: be.comp.programming
3 messages
3 total messages
Started by Christof Laeremans
Sat, 12 Oct 2002 10:18
Java IOExceptions
Author: Christof Laeremans
Date: Sat, 12 Oct 2002 10:18
Date: Sat, 12 Oct 2002 10:18
19 lines
1555 bytes
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
Author: MisterJ
Date: Sat, 12 Oct 2002 11:25
Date: Sat, 12 Oct 2002 11:25
30 lines
2293 bytes
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
Author: Koen Hautekeete
Date: Sat, 12 Oct 2002 12:50
Date: Sat, 12 Oct 2002 12:50
137 lines
4412 bytes
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