Commit 88bd551a authored by Børge Haugset's avatar Børge Haugset
Browse files

unntak klare...

parent 307243c7
package uke13.unntak;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CloseUnopenedFile {
private static void lesFil() {
String filnavn = "C:/Users/borgeha/tdt4100-v2022/students/foreksempel/src/main/java/uke13/unntak/Linjer.txt";
BufferedReader br = null;
try (FileReader fr = new FileReader(filnavn)) {
br = new BufferedReader(fr);
int count = 0;
String linje;
while (br.ready()) {
linje = br.readLine();
count++;
System.out.println("Linje nummer "+count+": "+linje);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
lesFil();
}
}
package uke13.unntak;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class FilLesing {
private static void lesFil() {
BufferedReader br = null; // For å initialisere den...
try {
String filnavn = "C:/Users/borgeha/tdt4100-v2022/students/foreksempel/src/main/java/uke13/unntak/Linjer.txt";
FileReader fr = new FileReader(filnavn);
br = new BufferedReader(fr);
int count = 0;
String linje;
while (br.ready()) {
linje = br.readLine();
count++;
System.out.println("Linje nummer "+count+": "+linje);
}
// int a = 3/0;
} catch (IOException e) {
System.out.println("IOException: "+e.getMessage());;
}
try {
System.out.println("Før close");
br.close();
System.out.println("Etter close");
} catch (IOException e) {
System.out.println("Close feilet: "+e.getMessage());
}
}
public static void main(String[] args) {
lesFil();
}
}
Line 1
Linje 2
Linj 3
Linea 4
\ No newline at end of file
package uke13.unntak;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class NorskeTall {
private int value, tenvalue, onevalue;
List<String> validTens = new ArrayList<>(Arrays.asList("tjue","tretti","førti","femti","seksti","sytti","åtti","nitti","hundre"));
List<String> validOnes = new ArrayList<>(Arrays.asList("null","en","to","tre","fire","fem","seks","sju","åtte","ni"));
List<String> validSpecial = new ArrayList<>(Arrays.asList("ti","elleve","tolv","tretten","fjorten","femten","seksten","sytten","atten","nitten"));
public int getValue() {
return value;
}
private void parseInput(String streng) {
// Sjekker for tall mellom 11 og 19 først
if (validSpecial.contains(streng)) {
value = validSpecial.indexOf(streng) + 10;
return;
}
// Sjekker for tall under 10, dvs 0 - 9
if (validOnes.contains(streng)) {
value = validOnes.indexOf(streng);
return;
}
// Sjekker for hele tiere
if (validTens.contains(streng)) {
value = (validTens.indexOf(streng)+2)*10;
return;
}
// SÅ kommer det vanskelige: sjekke substrenger.
// Det vi vet: strengen MÅ inneholde en valid ener og en valid tier.
// Vi må også sjekke for om strengen inneholder noe mer enn bare det...
parseTensAndOnes(streng);
}
private void parseTensAndOnes(String streng) {
// Sjekke først for tiere
// System.out.println("Sjekker "+streng);
for (int i = 0; i < validTens.size(); i++) {
if (streng.contains(validTens.get(i))) {// har tieren
// System.out.println("Funnet tier: "+(i*10+20));
tenvalue = i*10+20;
// Så må vi fjerne substring av tiere fra hele strengen,
// hvis ikke utløses femtito av sjekk på fem.
streng = streng.replace(validTens.get(i), "");
break;
}
}
// så sjekker vi enerne.
for (int i = 0; i < validOnes.size(); i++) {
if (streng.contains(validOnes.get(i))) {// har eneren
// System.out.println("Funnet ener: "+i);
onevalue = i;
break;
}
}
if (onevalue == 0 && tenvalue == 0)
throw new NorskeTallException("Feil med tiere og enere: "+streng);
else if (onevalue == 0)
throw new NorskeTallException("Feil med enere: "+streng);
else if (tenvalue == 0)
throw new NorskeTallException("Feil med tiere: "+streng);
// Oppdatere der det er funnet både tiere og ener:
value = tenvalue+onevalue;
}
public void sjekkTall(String streng) {
this.parseInput(streng);
}
public NorskeTall(String streng) {
parseInput(streng);
}
public static void main(String[] args) {
System.out.println(new NorskeTall("nittisju").getValue());
System.out.println(new NorskeTall("tretten").getValue());
System.out.println(new NorskeTall("åtte").getValue());
System.out.println(new NorskeTall("tjue").getValue());
System.out.println(new NorskeTall("tjuetre").getValue());
// Så de med feil:
// System.out.println(new NorskeTall("firefire").getValue());
// System.out.println(new NorskeTall("førtisytten").getValue());
// System.out.println(new NorskeTall("fjørtifjire").getValue());
}
}
package uke13.unntak;
public class NorskeTallException extends NumberFormatException {
public NorskeTallException() {
super();
}
public NorskeTallException(String s) {
super(s);
}
}
package uke13.unntak;
public class u16 {
private static void method3(String str) throws Exception {
if (str.equals("hei"))
throw new Exception("Feil!");
else System.out.println("Du skrev "+str);
}
private static void method2(String str) throws Exception {
method3(str);
}
private static void method1(String str) {
try {
method2(str);
} catch (Exception e) {
System.out.println("Let me take care of this: "+e.getLocalizedMessage());
}
}
public static void main(String[] args) {
method1("Ost");
method1("hei");
}
}
package uke13.unntak;
import java.io.IOException;
public class u17 {
private static void method3(String str) {
double d = Double.valueOf(str);
System.out.println("Made number: "+d);
}
private static void method2(String str) {
try {
method3(str);
} catch (IllegalArgumentException e) { // Trykk på unntaket, trykk F4 eller c-s-P 'show type hierarchy'
System.out.println("Meep method2, IllegalArgumentException");
}
}
private static void method1(String str) {
try {
method2(str);
} catch (NumberFormatException e) { // Trykk på unntaket, trykk F4 eller c-s-P 'show type hierarchy'
System.out.println("Meg fikse");
}
}
public static void main(String[] args) {
method1("3");
method1("hei");
// throw new RuntimeException(); marker unntaket, trykk på F4 for å se klassehierarki.
}
}
package uke13.unntak;
public class u18 {
private static void method4() {
throw new IllegalArgumentException();
}
private static void method3() {
try {
method4();
} catch (NumberFormatException e) {
System.out.println("Method3 caught "+e.getMessage());
}
}
private static void method2() {
try {
method3();
} catch (IndexOutOfBoundsException ioob){
System.out.println("Hvorfor er jeg her, egentlig. Jo, for å vise at en "+
"kan ha flere typer unntak etter hverandre.");
} catch (IllegalArgumentException e) {
System.out.println("Method2 caught "+e.getMessage());
}
}
private static void method1() {
try {
method2();
} catch (Exception e) {
System.out.println("Method1 caugt "+e.getMessage());
}
}
public static void main(String[] args) {
method1();
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment