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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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 ?
27. november 2008 - 23:44
#3
Til beløb bør man bruge BigDecimal.
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(); } } }
Kurser inden for grundlæggende programmering