24. november 2008 - 19:40
Der er
4 kommentarer
throws Exception
Hej jeg har følgende script: import java.io.*; public class Rates{ public static void main(String[] args) throws Exception{ Double EUR = -1.0; Double USD = -1.0; Double GBP = -1.0; Double SEK = -1.0; Double NOK = -1.0; Double ISK = -1.0; Double CHF = -1.0; Double CAD = -1.0; Double JPY = -1.0; Double AUD = -1.0; Double NZD = -1.0; Double EEK = -1.0; Double LVL = -1.0; Double LTL = -1.0; Double PLN = -1.0; Double CZK = -1.0; Double HUF = -1.0; Double HKD = -1.0; Double SGD = -1.0; Double ZAR = -1.0; Double BGN = -1.0; Double RON = -1.0; Double SKK = -1.0; Double TRY = -1.0; Double KRW = -1.0; Double HRK = -1.0; Double RUB = -1.0; Double THB = -1.0; Double MYR = -1.0; Double PHP = -1.0; Double IDR = -1.0; Double CNY = -1.0; Double BRL = -1.0; Double MXN = -1.0; Double SDR = -1.0; File file = null; FileReader freader = null; LineNumberReader lnreader = null; try{ file = new File("2008-11-24.txt"); freader = new FileReader(file); lnreader = new LineNumberReader(freader); String line = ""; int lineno = 1; while ((line = lnreader.readLine()) != null){ if(lineno == 1) { EUR = Double.parseDouble(line);} if(lineno == 2) { USD = Double.parseDouble(line);} if(lineno == 3) { GBP = Double.parseDouble(line);} if(lineno == 4) { SEK = Double.parseDouble(line);} if(lineno == 5) { NOK = Double.parseDouble(line);} if(lineno == 6) { ISK = Double.parseDouble(line);} if(lineno == 7) { CHF = Double.parseDouble(line);} if(lineno == 8) { CAD = Double.parseDouble(line);} if(lineno == 9) { JPY = Double.parseDouble(line);} if(lineno == 10) { AUD = Double.parseDouble(line);} if(lineno == 11) { NZD = Double.parseDouble(line);} if(lineno == 12) { EEK = Double.parseDouble(line);} if(lineno == 13) { LVL = Double.parseDouble(line);} if(lineno == 14) { LTL = Double.parseDouble(line);} if(lineno == 15) { PLN = Double.parseDouble(line);} if(lineno == 16) { CZK = Double.parseDouble(line);} if(lineno == 17) { HUF = Double.parseDouble(line);} if(lineno == 18) { HKD = Double.parseDouble(line);} if(lineno == 19) { SGD = Double.parseDouble(line);} if(lineno == 20) { ZAR = Double.parseDouble(line);} if(lineno == 21) { BGN = Double.parseDouble(line);} if(lineno == 22) { RON = Double.parseDouble(line);} if(lineno == 23) { SKK = Double.parseDouble(line);} if(lineno == 24) { TRY = Double.parseDouble(line);} if(lineno == 25) { KRW = Double.parseDouble(line);} if(lineno == 26) { HRK = Double.parseDouble(line);} if(lineno == 27) { RUB = Double.parseDouble(line);} if(lineno == 28) { THB = Double.parseDouble(line);} if(lineno == 29) { MYR = Double.parseDouble(line);} if(lineno == 30) { PHP = Double.parseDouble(line);} if(lineno == 31) { IDR = Double.parseDouble(line);} if(lineno == 32) { CNY = Double.parseDouble(line);} if(lineno == 33) { BRL = Double.parseDouble(line);} if(lineno == 34) { MXN = Double.parseDouble(line);} if(lineno == 35) { SDR = Double.parseDouble(line);} lineno++; } System.out.println(EUR); System.out.println(USD); System.out.println(GBP); System.out.println(SEK); System.out.println(NOK); System.out.println(ISK); System.out.println(CHF); System.out.println(CAD); System.out.println(JPY); System.out.println(AUD); System.out.println(NZD); System.out.println(EEK); System.out.println(LVL); System.out.println(LTL); System.out.println(PLN); System.out.println(CZK); System.out.println(HUF); System.out.println(HKD); System.out.println(SGD); System.out.println(ZAR); System.out.println(BGN); System.out.println(RON); System.out.println(SKK); System.out.println(TRY); System.out.println(KRW); System.out.println(HRK); System.out.println(RUB); System.out.println(THB); System.out.println(MYR); System.out.println(PHP); System.out.println(IDR); System.out.println(CNY); System.out.println(BRL); System.out.println(MXN); System.out.println(SDR); } finally{ freader.close(); lnreader.close(); } } } Og da denne klasse ikke er min main, denne klasse skal blot kaldes fra en anden klasse, skal jeg finde en måde at fjerne "public static void main(String[] args) throws Exception{" uden også at slette min exception. Hvordan gøres dette? På forhånd tak.
Annonceindlæg fra DE-CIX
25. november 2008 - 12:10
#1
Det må da tage prisen for det ringeste kode jeg har set i år. Det kan fås ned på 10 linjer uden problemer. På grund af afrundingsfejl bør du i øvrigt så vidt muligt undgå at bruge Double til sådan nogle ting. Hvis du ikke vil kaste en exception videre fra en metode, så skal du catche den: import java.io.*; public class Rates{ public static void main(String[] args) { Double EUR = -1.0; Double USD = -1.0; Double GBP = -1.0; Double SEK = -1.0; Double NOK = -1.0; Double ISK = -1.0; Double CHF = -1.0; Double CAD = -1.0; Double JPY = -1.0; Double AUD = -1.0; Double NZD = -1.0; Double EEK = -1.0; Double LVL = -1.0; Double LTL = -1.0; Double PLN = -1.0; Double CZK = -1.0; Double HUF = -1.0; Double HKD = -1.0; Double SGD = -1.0; Double ZAR = -1.0; Double BGN = -1.0; Double RON = -1.0; Double SKK = -1.0; Double TRY = -1.0; Double KRW = -1.0; Double HRK = -1.0; Double RUB = -1.0; Double THB = -1.0; Double MYR = -1.0; Double PHP = -1.0; Double IDR = -1.0; Double CNY = -1.0; Double BRL = -1.0; Double MXN = -1.0; Double SDR = -1.0; File file = null; FileReader freader = null; LineNumberReader lnreader = null; try{ file = new File("2008-11-24.txt"); freader = new FileReader(file); lnreader = new LineNumberReader(freader); String line = ""; int lineno = 1; while ((line = lnreader.readLine()) != null){ if(lineno == 1) { EUR = Double.parseDouble(line);} if(lineno == 2) { USD = Double.parseDouble(line);} if(lineno == 3) { GBP = Double.parseDouble(line);} if(lineno == 4) { SEK = Double.parseDouble(line);} if(lineno == 5) { NOK = Double.parseDouble(line);} if(lineno == 6) { ISK = Double.parseDouble(line);} if(lineno == 7) { CHF = Double.parseDouble(line);} if(lineno == 8) { CAD = Double.parseDouble(line);} if(lineno == 9) { JPY = Double.parseDouble(line);} if(lineno == 10) { AUD = Double.parseDouble(line);} if(lineno == 11) { NZD = Double.parseDouble(line);} if(lineno == 12) { EEK = Double.parseDouble(line);} if(lineno == 13) { LVL = Double.parseDouble(line);} if(lineno == 14) { LTL = Double.parseDouble(line);} if(lineno == 15) { PLN = Double.parseDouble(line);} if(lineno == 16) { CZK = Double.parseDouble(line);} if(lineno == 17) { HUF = Double.parseDouble(line);} if(lineno == 18) { HKD = Double.parseDouble(line);} if(lineno == 19) { SGD = Double.parseDouble(line);} if(lineno == 20) { ZAR = Double.parseDouble(line);} if(lineno == 21) { BGN = Double.parseDouble(line);} if(lineno == 22) { RON = Double.parseDouble(line);} if(lineno == 23) { SKK = Double.parseDouble(line);} if(lineno == 24) { TRY = Double.parseDouble(line);} if(lineno == 25) { KRW = Double.parseDouble(line);} if(lineno == 26) { HRK = Double.parseDouble(line);} if(lineno == 27) { RUB = Double.parseDouble(line);} if(lineno == 28) { THB = Double.parseDouble(line);} if(lineno == 29) { MYR = Double.parseDouble(line);} if(lineno == 30) { PHP = Double.parseDouble(line);} if(lineno == 31) { IDR = Double.parseDouble(line);} if(lineno == 32) { CNY = Double.parseDouble(line);} if(lineno == 33) { BRL = Double.parseDouble(line);} if(lineno == 34) { MXN = Double.parseDouble(line);} if(lineno == 35) { SDR = Double.parseDouble(line);} lineno++; } System.out.println(EUR); System.out.println(USD); System.out.println(GBP); System.out.println(SEK); System.out.println(NOK); System.out.println(ISK); System.out.println(CHF); System.out.println(CAD); System.out.println(JPY); System.out.println(AUD); System.out.println(NZD); System.out.println(EEK); System.out.println(LVL); System.out.println(LTL); System.out.println(PLN); System.out.println(CZK); System.out.println(HUF); System.out.println(HKD); System.out.println(SGD); System.out.println(ZAR); System.out.println(BGN); System.out.println(RON); System.out.println(SKK); System.out.println(TRY); System.out.println(KRW); System.out.println(HRK); System.out.println(RUB); System.out.println(THB); System.out.println(MYR); System.out.println(PHP); System.out.println(IDR); System.out.println(CNY); System.out.println(BRL); System.out.println(MXN); System.out.println(SDR); } catch(IOException e) { e.printStackTrace(); } finally{ freader.close(); lnreader.close(); } } } Så bliver fejlen skrevet ud i stedet for at blive kastet videre.
26. november 2008 - 20:37
#2
Ah smart smart. Som kodens længde nok afslører er jeg netop gået igang med java. Hvordan kan jeg undgå at bruge double, det er jo decimaltal der ligger i 2008-11-24.txt ?
02. december 2008 - 14:41
#4
Overvej om du ikke er bedre stillet med en liste. Det her kode gør det samme som din kode: import java.io.*; public class Rates{ public static void main(String[] args) { ArrayList<BigDecimal> rates = new ArrayList<BigDecimal>(); File file = null; FileReader freader = null; LineNumberReader lnreader = null; try{ file = new File("2008-11-24.txt"); freader = new FileReader(file); lnreader = new LineNumberReader(freader); String line; while ((line = lnreader.readLine()) != null){ rates.add(new BigDecimal(line)); } for (BigDecimal b : rates) System.out.println(b); } catch(IOException e) { e.printStackTrace(); } finally{ freader.close(); lnreader.close(); } } }