10. december 2005 - 22:06
Der er
25 kommentarer og 1 løsning
Igen problemer med Java
Jeg har problemer med at hente data fra Excel. Jeg kan godt hente en kolonne data fra Excel over i min formel i Java. Men når jeg henter række to går det ikke. Mit problem lige nu er at hente to kolonne fra Excel. NetBeans output skriver: K =-20.200000000000003 java.sql.SQLException: Column not found BUILD SUCCESSFUL (total time: 0 seconds) Mit program ser sådan ud: /* * Excel.java * * Created on 9. december 2005, 11:45 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package javaapplication48; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; /** * * @author Ellen Koch Nielsen */ public class Excel { /** Creates a new instance of Excel */ public Excel() { } /** * @param args the command line arguments */ public static void main(String[] args) { Connection c = null; Statement stmnt = null; ResultSet rs = null; try { Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); String query = "select Time from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); stmnt = c.createStatement(); String queryg = "select Dagnr from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( queryg ); stmnt = c.createStatement(); String queryd = "select GlobalS from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( queryd ); stmnt = c.createStatement(); String queryt = "select Dag from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( queryt ); while( rs.next() ) { // pkt. 1.0 // Udregning af formel: solindfald = m2 * Globalsolstråling * Rb // pkt. 1.1 udregning af Rb: // Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret // udregning af K // lokalkonstanten = K; double Etm; Etm = -15; double Etst; Etst = -9.95; double K; K = 4 * (Etm - Etst); System.out.println("K =" + K ); // Tz = lokaltid(zonetid) double Tzt; Tzt = Double.parseDouble( rs.getString( "Time" )); double Tz; Tz = Tzt; // udregning af B // B indsættes i grader // dagensnummer = dagnr; double dagnr; dagnr = Double.parseDouble( rs.getString( "Dagnr" )); double B; B = (dagnr - 1) * (360/365); // udregning af Tj // Tidekvationen = Tj; double Tj; Tj = 229.2 * (0.000075 + 0.001868 * Math.cos(B) - 0.030277 * Math.sin(B) - 0.014615 * Math.cos(2*B) - 0.04089 * Math.sin(2*B)); // Soltid = Ts; // udregning af Ts double Ts; Ts = Tz + Tj + K; System.out.println("Ts=Tz+Tj+K"); // w = timevinklen // udregning af w double w; w = 15 * (Ts -12); // deklination = d // udregning af d double d; d = 23.45 * Math.sin(((284+dagnr)*260)/365); // ø = stedet breddegrad i Tylstrup double ø; ø = 57.180; // Beta = fladens hældning double Beta; Beta = 45; // udregning af Rb // Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret double Rb; Rb = ((Math.cos((ø-Beta))*Math.cos(d)*Math.cos(w)+Math.sin((ø-Beta))*Math.sin(d))/(Math.cos(d)*Math.cos(ø)*Math.cos(w)+Math.sin(d)*Math.sin(ø))); System.out.println("Rb = " + Rb + ""); // pkt. 1.3 // uddregning af solindfald // Solindfald = m2 * E * Rb // GlobalSol = data fra vejrdata // E = GlobalSol double E; E = Double.parseDouble( rs.getString( "GlobalS" )); // m2 = kvadratmeter på solfangeren double m2; m2 = 2.51; // udregning af solindfald double SolIndfald; SolIndfald = m2 * E * Rb; System.out.println("Solindfald = " + SolIndfald + "watt"); // pkt 2.0 // udregning af Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2 // Tm = middeltemperatur // pkt. 2.1 // udregning af DeltaT // DeltaT = (tid * SolIndfald)/(masse * cp) double tid; tid = 3600; double masse; masse = 75.3; // cp = SpecifikVarmekapacitet double cp; cp = 4180; // udregning af DeltaT double DeltaT; DeltaT = ((tid * SolIndfald)/(masse * cp)); // pkt 2.2 // udregning af Tm double Tind; Tind = 4; double Tm; Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2; System.out.println("Tm = " + Tm + "grader"); // pkt. 3.0 // Solfangerens effekt = nX * E * m2 * Rb // pkt. 3.1 // nX = virkningsgrad double nX; nX = 0.82; // pkt. 3.2 // udregning af SolfangerEffekt double SolfangerEffekt; SolfangerEffekt = nX * E * m2 * Rb; System.out.println("Solfangerens Effekt = " + SolfangerEffekt + "watt"); // pkt. 4.0 // udregning af TemperaturÆndring // TemperaturÆndring = ((tid * SolfangerEffekt)/(masse * cp)) + Tind // pkt. 4.1 double TemperaturÆndring; TemperaturÆndring = ((tid * SolfangerEffekt)/( masse * cp)) + Tind ; System.out.println("Temperaturændring = " + TemperaturÆndring + "grader"); System.out.println("Seffekt omregnet til temperatur"); // pkt. 5.0 // pkt. 5.1 if (TemperaturÆndring >= 45) { System.out.println("Temperaturændring er: " + TemperaturÆndring + " grader"); System.out.println("Varmepumpen kører ikke."); // Hvis temperaturen er over 45 grader er formlen: Seffekt = Ett:ddd double Ettdd; Ettdd = Double.parseDouble( rs.getString( "dag" )); System.out.println(+ Ettdd + "=" + SolfangerEffekt + " watt"); } // pkt. 5.2 else if (TemperaturÆndring >=12) { System.out.println("Temperaturændring er: " + TemperaturÆndring + " grader."); System.out.println("Varmepumpen kører."); // Denne formel gælder, hvis temperaturen er under 45 grader og over 12 grader: solfangeren effekt + el - tab = Ett:ddd double El; El = 1120; double Tab1; Tab1 = 353; double Tab2; Tab2 = 436; double Tab; Tab = Tab1 + Tab2; double ligning; ligning = SolfangerEffekt + El - Tab; double Ettdd; Ettdd = Double.parseDouble( rs.getString( "dag" )); System.out.println( (rs.getString( "Dag" ))); System.out.println(+ Ettdd + "=" + ligning + " watt"); } // pkt. 5.3 else if (TemperaturÆndring <= 12) { System.out.println("Temperaturændring er kun: " + TemperaturÆndring + " grader."); System.out.println("Elpatronen kører."); } } } catch( Exception e ) { System.err.println( e ); } try { stmnt.close(); c.close(); } catch( Exception e ) { System.err.println( e ); } } }
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
10. december 2005 - 22:37
#1
Du bruger kun det sidste resultset ! Sådan: Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); String query = "select Time from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { ............ ........... } stmnt = c.createStatement(); String queryg = "select Dagnr from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( queryg ); while( rs.next() ) { ............ ........... } stmnt = c.createStatement(); String queryd = "select GlobalS from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( queryd ); while( rs.next() ) { ............ ........... } stmnt = c.createStatement(); String queryt = "select Dag from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( queryt ); while( rs.next() ) { ............ ........... }
10. december 2005 - 23:32
#2
Hver af mine formler referere til formlen før, så virker formlerne ikke. Nu får jeg disse fejlmeddelser: init: deps-jar: Compiling 1 source file to C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\build\classes C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:71: cannot find symbol symbol : variable Tzt location: class javaapplication50.Excelwhile Tz = Tzt * 60; C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:167: cannot find symbol symbol : variable Rb location: class javaapplication50.Excelwhile SolIndfald = m2 * E * Rb; C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:220: cannot find symbol symbol : variable Rb location: class javaapplication50.Excelwhile SolfangerEffekt = nX * E * m2 * Rb; C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:247: cannot find symbol symbol : variable TemperaturÆndring location: class javaapplication50.Excelwhile if (TemperaturÆndring >= 45) C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:258: cannot find symbol symbol : variable SolfangerEffekt location: class javaapplication50.Excelwhile System.out.println( + SolfangerEffekt ); C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:263: cannot find symbol symbol : variable TemperaturÆndring location: class javaapplication50.Excelwhile else if (TemperaturÆndring >=12) C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:282: cannot find symbol symbol : variable SolfangerEffekt location: class javaapplication50.Excelwhile ligning = SolfangerEffekt + El - Tab; C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:282: operator - cannot be applied to <nulltype>,double ligning = SolfangerEffekt + El - Tab; C:\Documents and Settings\Ellen Koch Nielsen\JavaApplication50\src\javaapplication50\Excelwhile.java:295: cannot find symbol symbol : variable TemperaturÆndring location: class javaapplication50.Excelwhile else if (TemperaturÆndring <= 12) 9 errors
11. december 2005 - 08:57
#3
Nu ved jeg jo ikke hvad de ResultSet indeholder, men du skal selvfølgelig kun referere til de variabler som findes i de respective ResultSet. Definer dine varialber udenfor din try/catch og gerne på samme linie det gør din kode langt mere overskuelig og læsbar, især for andre double Etm = -15; // og så skrives referencer med lille begyndelsesbogstav, etm double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; ......... try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); query = "select Time from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { ............ ........... Tz = Tzt * 60; // men kun hvis Tzt findes i det FØRSTE ResultSet } query = "select Dagnr from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { ............ ........... } query = "select GlobalS from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { ............ ........... } query = "select Dag from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { ............ ........... } Referer kun til noget while løkkerne HVIS DET FINDES
11. december 2005 - 14:49
#4
Jeg forstår ikke helt, hvordan jeg skal gøre.
11. december 2005 - 16:07
#5
Jeg ved ikke om du er med på hvad jeg mener, øverste del af din try{catch tror jeg faktisk skal se såfan ud double Etm = -15; double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; double Tzt, dagnr, E, Ettdd; try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); query = "select Time from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); } query = "select Dagnr from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { dagnr = Double.parseDouble( rs.getString( "Dagnr" )); } query = "select GlobalS from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { E = Double.parseDouble( rs.getString( "GlobalS" )); } query = "select Dag from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Ettdd = Double.parseDouble( rs.getString( "dag" )); } ........... ............. Hjælper det ????
11. december 2005 - 16:27
#6
Det hjælper lidt, men i while løkke nummer 2 mangler Tz reference til while løkke 1. Hvad skal jeg skrive for, at Tz ved, at den skal hente sin reference i while løkke 1. Her er mit program: package javaapplication51; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; public class Time { /** Creates a new instance of Time */ public Time() { } public static void main(String[] args) { Connection c = null; Statement stmnt = null; ResultSet rs = null; double Etm = -15; double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; double Tzt, dagnr, E, Ettdd; try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); query = "select Time from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); double Tz = Tzt *60; } query = "select Dagnr from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { dagnr = Double.parseDouble( rs.getString( "Dagnr" )); // udregning af B // B indsættes i grader // dagensnummer = dagnr; double B; B = (dagnr - 1) * (360/365); // udregning af Tj // Tidekvationen = Tj; double Tj; Tj = 229.2 * (0.000075 + 0.001868 * Math.cos(B) - 0.030277 * Math.sin(B) - 0.014615 * Math.cos(2*B) - 0.04089 * Math.sin(2*B)); // Soltid = Ts; // udregning af Ts double Ts; Ts = Tz + Tj + K; } query = "select GlobalS from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { E = Double.parseDouble( rs.getString( "GlobalS" )); } query = "select Dag from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Ettdd = Double.parseDouble( rs.getString( "dag" )); } } catch( Exception e ) { System.err.println( e ); } try { stmnt.close(); c.close(); } catch( Exception e ) { System.err.println( e ); } } }
11. december 2005 - 16:40
#7
double Etm = -15; double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; double Tzt, dagnr, E, Ettdd; double Tz = 0; // SE HER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); query = "select Time from [sheet1$] where Time2=4571;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); Tz = Tzt *60; // FLYT Tz UNDENFOR DIN TRY/CATCH }
11. december 2005 - 17:47
#8
Tak for hjælpen indtil videre, men nu gider java kun at skrive Tz ud. De næste jeg har sat til at skrive ud; Ts,SolfangerEffekt, bliver ikke skrevet ud. Fordi det er de sidste formler jeg skal bruge til at komme videre. Så det ville være med lidt mere hjælp. Net Beans output skriver: java.lang.NullPointerException BUILD SUCCESSFUL (total time: 0 seconds)// når jeg fjerner udskrivning af Tz Sådan ser programmet ud: package javaapplication51; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; /** * * @author Ellen Koch Nielsen */ public class Time { /** Creates a new instance of Time */ public Time() { } public static void main(String[] args) { Connection c = null; Statement stmnt = null; ResultSet rs = null; double Etm = -15; double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; double Tzt, dagnr, E, Ettdd; double Tz = 0; double Rb = 0; double TemperaturÆndring = 0; double SolfangerEffekt = 0; try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); query = "select Time from [sheet1$] ;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); Tz = Tzt *60; System.out.println("Tz" + Tz + "watt"); } query = "select Dagnr from [sheet1$] ;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { dagnr = Double.parseDouble( rs.getString( "Dagnr" )); // udregning af B // B indsættes i grader // dagensnummer = dagnr; double B; B = (dagnr - 1) * (360/365); System.out.println(+B); // udregning af Tj // Tidekvationen = Tj; double Tj; Tj = 229.2 * (0.000075 + 0.001868 * Math.cos(B) - 0.030277 * Math.sin(B) - 0.014615 * Math.cos(2*B) - 0.04089 * Math.sin(2*B)); // Soltid = Ts; // udregning af Ts double Ts; Ts = Tz + Tj + K; System.out.println("Ts" + Ts + "watt" ); // w = timevinklen // udregning af w double w; w = 15 * (Ts -12); // deklination = d // udregning af d double d; d = 23.45 * Math.sin(((284+dagnr)*260)/365); // ø = stedet breddegrad i Tylstrup double ø; ø = 57.180; // Beta = fladens hældning double Beta; Beta = 45; // udregning af Rb // Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret Rb = ((Math.cos((ø-Beta))*Math.cos(d)*Math.cos(w)+Math.sin((ø-Beta))*Math.sin(d))/(Math.cos(d)*Math.cos(ø)*Math.cos(w)+Math.sin(d)*Math.sin(ø))); } query = "select GlobalS from [sheet1$] ;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { E = Double.parseDouble( rs.getString( "GlobalS" )); // pkt. 1.3 // uddregning af solindfald // Solindfald = m2 * E * Rb // GlobalSol = data fra vejrdata // E = GlobalSol // m2 = kvadratmeter på solfangeren double m2; m2 = 2.51; // udregning af solindfald double SolIndfald; SolIndfald = m2 * E * Rb; // pkt 2.0 // udregning af Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2 // Tm = middeltemperatur // pkt. 2.1 // udregning af DeltaT // DeltaT = (tid * SolIndfald)/(masse * cp) double tid; tid = 3600; double masse; masse = 75.3; // cp = SpecifikVarmekapacitet double cp; cp = 4180; // udregning af DeltaT double DeltaT; DeltaT = ((tid * SolIndfald)/(masse * cp)); // pkt 2.2 // udregning af Tm double Tind; Tind = 4; double Tm; Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2; // pkt. 3.0 // Solfangerens effekt = nX * E * m2 * Rb // pkt. 3.1 // nX = virkningsgrad double nX; nX = 0.82; // pkt. 3.2 // udregning af SolfangerEffekt SolfangerEffekt = nX * E * m2 * Rb; System.out.println("Solfangerens Effekt = " + SolfangerEffekt + "watt"); // pkt. 4.0 // udregning af TemperaturÆndring // TemperaturÆndring = ((tid * SolfangerEffekt)/(masse * cp)) + Tind // pkt. 4.1 TemperaturÆndring = ((tid * SolfangerEffekt)/( masse * cp)) + Tind ; } query = "select Dag from [sheet1$];"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Ettdd = Double.parseDouble( rs.getString( "Dag" )); // pkt. 5.0 // pkt. 5.1 if (TemperaturÆndring >= 45) { // Hvis temperaturen er over 45 grader er formlen: Seffekt = Ett:ddd Ettdd = Double.parseDouble( rs.getString( "dag" )); System.out.println( + SolfangerEffekt ); } // pkt. 5.2 else if (TemperaturÆndring >=12) { // Denne formel gælder, hvis temperaturen er under 45 grader og over 12 grader: solfangeren effekt + el - tab = Ett:ddd double El; El = 1120; double Tab1; Tab1 = 353; double Tab2; Tab2 = 436; double Tab; Tab = Tab1 + Tab2; double ligning; ligning = SolfangerEffekt + El - Tab; Ettdd = Double.parseDouble( rs.getString( "Dag" )); System.out.println( + ligning ); } // pkt. 5.3 else if (TemperaturÆndring <= 12) { } } } catch( Exception e ) { System.err.println( e ); } try { stmnt.close(); c.close(); } catch( Exception e ) { System.err.println( e ); } } }
11. december 2005 - 17:52
#9
Mig som skriver noget sludder, sådan skal den selvfølgelig se ud, det er selve definitionen af Tz som skulle flyttes udenfor while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); Tz = Tzt *60; }
11. december 2005 - 18:13
#10
med definitionen mener du: "Tz = 0" ????? Jeg har stadig problemer med at få slutresultatet frem?????
11. december 2005 - 18:35
#11
Jeg kan kun få resultatet af den første while løkke, så skriver netbeans output: "java.lang.NullPointerException" Hvad gør jeg forkert ??????
11. december 2005 - 18:59
#12
Du er nødt til at finde ud af hvor den nullpointer er - er det dit ResultSet i anden løkke ?? Prøv query = "select Dagnr from [sheet1$] ;"; rs = stmnt.executeQuery( query ); if(rs == null) System.out.println("SHIT !!!!"); while( rs.next() ) { Din kode er ikke specielt gennemskuelig, så jeg har lidt svært ved at se det, men find den nullpointer
11. december 2005 - 19:09
#13
Nu skriver den bare Tz kolonnen ud og ikke mere. Jeg forstår ikke hvorfor den bare holder op med at skrive resten ud.....
11. december 2005 - 19:23
#14
Vil det sige at den ikke når til løkke nr. 2 ??
11. december 2005 - 19:28
#15
Nu når den til løkke nr. 2, men den når ikke til løkke nr. 3
11. december 2005 - 19:34
#16
d.v.s den når igennem 2, men ikke ind i 3 løkke er rs så null der, har du checket det ??
11. december 2005 - 19:39
#17
Så vidt jeg kan se er rs null, men hvis du vil tjecke det mit program: package javaapplication51; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; /** * * @author Ellen Koch Nielsen */ public class Time { /** Creates a new instance of Time */ public Time() { } public static void main(String[] args) { Connection c = null; Statement stmnt = null; ResultSet rs = null; double Etm = -15; double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; double Tzt, dagnr, E, Ettdd; double Tz = 0; double Rb = 0; double TemperaturÆndring = 0; double SolfangerEffekt = 0; try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" ); stmnt = c.createStatement(); query = "select Time from [sheet1$] ;"; rs = stmnt.executeQuery( query ); if(rs == null) while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); Tz = Tzt *60; } query = "select Dagnr from [sheet1$] ;"; rs = stmnt.executeQuery( query ); if(rs == null) System.out.println("SHIT !!!!"); while( rs.next() ) { dagnr = Double.parseDouble( rs.getString( "Dagnr" )); // udregning af B // B indsættes i grader // dagensnummer = dagnr; double B; B = (dagnr - 1) * (360/365); System.out.println(+B); // udregning af Tj // Tidekvationen = Tj; double Tj; Tj = 229.2 * (0.000075 + 0.001868 * Math.cos(B) - 0.030277 * Math.sin(B) - 0.014615 * Math.cos(2*B) - 0.04089 * Math.sin(2*B)); // Soltid = Ts; // udregning af Ts double Ts; Ts = Tz + Tj + K; // w = timevinklen // udregning af w double w; w = 15 * (Ts -12); // deklination = d // udregning af d double d; d = 23.45 * Math.sin(((284+dagnr)*260)/365); // ø = stedet breddegrad i Tylstrup double ø; ø = 57.180; // Beta = fladens hældning double Beta; Beta = 45; // udregning af Rb // Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret Rb = ((Math.cos((ø-Beta))*Math.cos(d)*Math.cos(w)+Math.sin((ø-Beta))*Math.sin(d))/(Math.cos(d)*Math.cos(ø)*Math.cos(w)+Math.sin(d)*Math.sin(ø))); System.out.println(+Rb); } query = "select GlobalS from [sheet1$] ;"; rs = stmnt.executeQuery( query ); if(rs == null) System.out.println("SHIT !!!!"); while( rs.next() ) { E = Double.parseDouble( rs.getString( "GlobalS" )); // pkt. 1.3 // uddregning af solindfald // Solindfald = m2 * E * Rb // GlobalSol = data fra vejrdata // E = GlobalSol // m2 = kvadratmeter på solfangeren double m2; m2 = 2.51; // udregning af solindfald double SolIndfald; SolIndfald = m2 * E * Rb; System.out.println(+SolIndfald); // pkt 2.0 // udregning af Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2 // Tm = middeltemperatur // pkt. 2.1 // udregning af DeltaT // DeltaT = (tid * SolIndfald)/(masse * cp) double tid; tid = 3600; double masse; masse = 75.3; // cp = SpecifikVarmekapacitet double cp; cp = 4180; // udregning af DeltaT double DeltaT; DeltaT = ((tid * SolIndfald)/(masse * cp)); // pkt 2.2 // udregning af Tm double Tind; Tind = 4; double Tm; Tm = (((tid * SolIndfald)/(masse * cp*2))+ Tind); // pkt. 3.0 // Solfangerens effekt = nX * E * m2 * Rb // pkt. 3.1 // nX = virkningsgrad double nX; nX = 0.82; // pkt. 3.2 // udregning af SolfangerEffekt SolfangerEffekt = nX * E * m2 * Rb; System.out.println("Solfangerens Effekt = " + SolfangerEffekt + "watt"); // pkt. 4.0 // udregning af TemperaturÆndring // TemperaturÆndring = ((tid * SolfangerEffekt)/(masse * cp)) + Tind // pkt. 4.1 TemperaturÆndring = ((tid * SolfangerEffekt)/( masse * cp)) + Tind ; } query = "select Dag from [sheet1$] ;"; rs = stmnt.executeQuery( query ); if(rs == null) System.out.println("SHIT !!!!"); while( rs.next() ) { Ettdd = Double.parseDouble( rs.getString( "Dag" )); // pkt. 5.0 // pkt. 5.1 if (TemperaturÆndring >= 45) { // Hvis temperaturen er over 45 grader er formlen: Seffekt = Ett:ddd Ettdd = Double.parseDouble( rs.getString( "dag" )); System.out.println( + SolfangerEffekt ); } // pkt. 5.2 else if (TemperaturÆndring >=12) { // Denne formel gælder, hvis temperaturen er under 45 grader og over 12 grader: solfangeren effekt + el - tab = Ett:ddd double El; El = 1120; double Tab1; Tab1 = 353; double Tab2; Tab2 = 436; double Tab; Tab = Tab1 + Tab2; double ligning; ligning = SolfangerEffekt + El - Tab; Ettdd = Double.parseDouble( rs.getString( "Dag" )); System.out.println( + ligning ); } // pkt. 5.3 else if (TemperaturÆndring <= 12) { } } } catch( Exception e ) { System.err.println( e ); } try { stmnt.close(); c.close(); } catch( Exception e ) { System.err.println( e ); } } }
11. december 2005 - 19:46
#18
Kan du copy/paste en lille del af dit regneark her ?
11. december 2005 - 19:55
#19
Jeg fatter ikke en hujene f.. Jeg har lige testet din kode med et regneark jeg hurtigt strikkede sammen - den kører da perfekt !!! Er dit regneark på engelsk ?? Ellers skal det være query = "select Time from [ark1$] ;"; og IKKE query = "select Time from [sheet1$] ;";
11. december 2005 - 19:57
#20
Dag Time Dato Dagnr 1 0 01-07-03 00:00 182,000 1 1 01-07-03 01:00 183,000 1 2 01-07-03 02:00 183,000 1 3 01-07-03 03:00 183,000 1 4 01-07-03 04:00 183,000 1 5 01-07-03 05:00 183,000 1 6 01-07-03 06:00 183,000 1 7 01-07-03 07:00 183,000 1 8 01-07-03 08:00 183,000 1 9 01-07-03 09:00 183,000 1 10 01-07-03 10:00 183,000 1 11 01-07-03 11:00 183,000 1 12 01-07-03 12:00 183,000 Time2 TempC DugtempC 15,5 13,5 0 15,6 13,2 0 15,7 13,3 0 15,4 13,2 0 15,1 12,8 12 13,5 12,2 18 13,5 12,5 41 13,3 12,2 42 13,5 12,6 50 13,4 12,9 53 13,4 12,9 51 13,5 13,1 33 13,4 13,1 71 GlobalS 1 2 3 4 5 6 7 8 9 10 11 12 13
11. december 2005 - 20:10
#21
Forstår det ikke helt 0 til 12 er det Dag 01-07-03 00:00 må være Dato og Time IKKE Time og Dato Er det korrekt ???
11. december 2005 - 20:17
#22
Ja det er korrekt
11. december 2005 - 20:19
#23
Gig mig lige en halv time til at strikke det sammen
11. december 2005 - 20:22
#24
Dag Time Dato Dagnr Time2 1 0 01-07-03 00:00 182,000 1 1 1 01-07-03 01:00 183,000 2 1 2 01-07-03 02:00 183,000 3 1 3 01-07-03 03:00 183,000 4 1 4 01-07-03 04:00 183,000 5 1 5 01-07-03 05:00 183,000 6 1 6 01-07-03 06:00 183,000 7 1 7 01-07-03 07:00 183,000 8 1 8 01-07-03 08:00 183,000 9 1 9 01-07-03 09:00 183,000 10 1 10 01-07-03 10:00 183,000 11 1 11 01-07-03 11:00 183,000 12 1 12 01-07-03 12:00 183,000 13 1 13 01-07-03 13:00 183,000 14 1 14 01-07-03 14:00 183,000 15 1 15 01-07-03 15:00 183,000 16 1 16 01-07-03 16:00 183,000 17 1 17 01-07-03 17:00 183,000 18 1 18 01-07-03 18:00 183,000 19 1 19 01-07-03 19:00 183,000 20 1 20 01-07-03 20:00 183,000 21 1 21 01-07-03 21:00 183,000 22 1 22 01-07-03 22:00 183,000 23 1 23 01-07-03 23:00 183,000 24 TempC DugtempC GlobalS 15,5 13,5 0 15,6 13,2 0 15,7 13,3 0 15,4 13,2 0 15,1 12,8 12 13,5 12,2 18 13,5 12,5 41 13,3 12,2 42 13,5 12,6 50 13,4 12,9 53 13,4 12,9 51 13,5 13,1 33 13,4 13,1 71 14,1 13,8 101 14,3 13,9 93 14 13,8 98 14,3 14 63 14,8 14,5 54 15,1 14,9 36 15 14,8 58 15 14,9 18 14,2 14,1 1 14,4 14,3 0 13,1 13 0 Der er data for et helt år
11. december 2005 - 20:42
#25
Sådan skal den se ud package javaapplication51; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; /** * * @author Ellen Koch Nielsen */ public class Time { /** Creates a new instance of Time */ public Time() { } public static void main(String[] args) { Connection c = null; Statement stmnt = null; ResultSet rs = null; double Etm = -15; double Etst = -9.95; double K = 4 * (Etm - Etst); String query = ""; double Tzt = 0, dagnr = 0, E = 0, Ettdd = 0; double Tz = 0; double Rb = 0; double TemperaturÆndring = 0; double SolfangerEffekt = 0; try{ Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:tester", "", "" ); stmnt = c.createStatement(); query = "select Time, Dagnr, GlobalS, Dag from [sheet1$] ;"; rs = stmnt.executeQuery( query ); while( rs.next() ) { Tzt = Double.parseDouble( rs.getString( "Time" )); dagnr = Double.parseDouble( rs.getString( "Dagnr" )); E = Double.parseDouble( rs.getString( "GlobalS" )); Ettdd = Double.parseDouble( rs.getString( "Dag" )); Tz = Tzt *60; // udregning af B // B indsættes i grader // dagensnummer = dagnr; double B; B = (dagnr - 1) * (360/365); // udregning af Tj // Tidekvationen = Tj; double Tj; Tj = 229.2 * (0.000075 + 0.001868 * Math.cos(B) - 0.030277 * Math.sin(B) - 0.014615 * Math.cos(2*B) - 0.04089 * Math.sin(2*B)); // Soltid = Ts; // udregning af Ts double Ts; Ts = Tz + Tj + K; // w = timevinklen // udregning af w double w; w = 15 * (Ts -12); // deklination = d // udregning af d double d; d = 23.45 * Math.sin(((284+dagnr)*260)/365); // ø = stedet breddegrad i Tylstrup double ø; ø = 57.180; // Beta = fladens hældning double Beta; Beta = 45; // udregning af Rb // Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret Rb = ((Math.cos((ø-Beta))*Math.cos(d)*Math.cos(w)+Math.sin((ø-Beta))*Math.sin(d))/(Math.cos(d)*Math.cos(ø)*Math.cos(w)+Math.sin(d)*Math.sin(ø))); System.out.println(+Rb); // pkt. 1.3 // uddregning af solindfald // Solindfald = m2 * E * Rb // GlobalSol = data fra vejrdata // E = GlobalSol // m2 = kvadratmeter på solfangeren double m2; m2 = 2.51; // udregning af solindfald double SolIndfald; SolIndfald = m2 * E * Rb; System.out.println(+SolIndfald); // pkt 2.0 // udregning af Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2 // Tm = middeltemperatur // pkt. 2.1 // udregning af DeltaT // DeltaT = (tid * SolIndfald)/(masse * cp) double tid; tid = 3600; double masse; masse = 75.3; // cp = SpecifikVarmekapacitet double cp; cp = 4180; // udregning af DeltaT double DeltaT; DeltaT = ((tid * SolIndfald)/(masse * cp)); // pkt 2.2 // udregning af Tm double Tind; Tind = 4; double Tm; Tm = (((tid * SolIndfald)/(masse * cp*2))+ Tind); // pkt. 3.0 // Solfangerens effekt = nX * E * m2 * Rb // pkt. 3.1 // nX = virkningsgrad double nX; nX = 0.82; // pkt. 3.2 // udregning af SolfangerEffekt SolfangerEffekt = nX * E * m2 * Rb; System.out.println("Solfangerens Effekt = " + SolfangerEffekt + "watt"); // pkt. 4.0 // udregning af TemperaturÆndring // TemperaturÆndring = ((tid * SolfangerEffekt)/(masse * cp)) + Tind // pkt. 4.1 TemperaturÆndring = ((tid * SolfangerEffekt)/( masse * cp)) + Tind ; // pkt. 5.0 // pkt. 5.1 if (TemperaturÆndring >= 45) { System.out.println( + SolfangerEffekt ); } // pkt. 5.2 else if (TemperaturÆndring >=12) { // Denne formel gælder, hvis temperaturen er under 45 grader og over 12 grader: solfangeren effekt + el - tab = Ett:ddd double El; El = 1120; double Tab1; Tab1 = 353; double Tab2; Tab2 = 436; double Tab; Tab = Tab1 + Tab2; double ligning; ligning = SolfangerEffekt + El - Tab; System.out.println( + ligning ); } // pkt. 5.3 else if (TemperaturÆndring <= 12){ } } } catch( Exception e ) { System.err.println( e ); } try { stmnt.close(); c.close(); } catch( Exception e ) { System.err.println( e ); } } }
11. december 2005 - 20:56
#26
Tusind tak for hjælpen.... Smuk 3. Advent
Kurser inden for grundlæggende programmering