Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

<JAVA> Beginnersvraag: Klasse Trend wordt niet uitgevoerd.

Pagina: 1
Acties:

Vraag


  • Bachatero
  • Registratie: december 2007
  • Laatst online: 13-09 15:52
Relevante software en hardware die ik gebruik: Eclips - Windows7
Ben me aan het verdiepen in JAVA. Ik heb inmiddels een aantal tutorials doorlopen op internet en probeer nu iets eenvoudigs op te starten.
Ik lees een MS Access data base bestand uit en wil de data zichtbaar maken. Als ik al mijn code in de hoofd klasse zet kan ik de database uitlezen. Vervolgens kopieerd ik de data naar een ArrayList. Tot zover werkt het dus.

Maar nu heb ik voor het uitlezen van de database een aparte klasse gemaakt. Ik heb dus de betreffende code vanuit de hoofdklasse naar de nieuwe klasse Trend gekopieerd.

Ik roep dus vervolgens nu de klasse Trend aan vanuit mijn hoofdklas. Echter die wordt niet uitgevoerd.
Ik maak kennelijk een nog een denkfout, maar ik kom er niet achter waardoor de klasse Trend niet wordt uitgevoerd.
De code compileert zonder fouten, maar voert de klasse Trend niet uit.

Ik ben er van overtuigd dat ik iets over het hoofd zie als beginner in JAVA.

Kan iemand mij op weg helpen?

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*; 
  
public class Hoofklasse { 

    public static void main(String args[]) { 
    
        ArrayList<Double> Det1Int_UFOV      = new ArrayList<Double>();
        ArrayList<Date>   Det1Int_UFOV_Date = new ArrayList<Date>();
            
        Trend();  // Dit wordt niet uitgevoerd.

        for (int  i = 0; i < Det1Int_UFOV.size(); i++) {
            
            System.out.print(Det1Int_UFOV_Date.get(i));
            System.out.printf("    %.2f %%\n",Det1Int_UFOV.get(i));            
            
                 }
        }


    private static void Trend() {
        // TODO Auto-generated method stub
        
         }

    }


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Trend {
    
    void Super() throws SQLException {          
        
        final String ParamID    = "18";
        final String ProcMode   = "1";
        final String Detector   = "2";
        final String Collimator = "0";
        final String Isotoop    = "11";
        
        Connection conn = DriverManager.getConnection("jdbc:ucanaccess://C:/Software/data/trenddb.mdb");
        Statement s = conn.createStatement();
        
        String query = "SELECT * FROM Trendvalues"         + 
                       " WHERE ParameterID =" + ParamID    +
                       " AND Index1="         + ProcMode   + 
                       " AND Index2="         + Detector   + 
                       " AND Index3="         + Collimator + 
                       " AND Index4="         + Isotoop;   
                    
        ResultSet resultSet = s.executeQuery(query);        
        
        while (resultSet.next()) {                 
               
            float trendValue = resultSet.getFloat("TrendValue");
            Date date        = resultSet.getDate( "TrendedDateTime");
            
            System.out.print(date);
            System.out.printf("    %.2f %%\n",trendValue);
                        
            Det1Int_UFOV.add((double) trendValue); // Kopieer naar Array
            Det1Int_UFOV_Date.add(date);
        }       
        
        System.out.println(Det1Int_UFOV.size());        
    }

}

Alle reacties


  • Daos
  • Registratie: oktober 2004
  • Niet online
Hij voert vrij zeker nu die statische methode Trend() in je Hoofklasse uit. Daar staat geen code in. Die methode kan je weggooien.

Om je Trend-klasse te gebruiken in deze vorm moet je eerst een object aanmaken van het type Trend en op dat object dan de Super-methode aanroepen.

Andere oplossing is die Super static maken zodat je die direct aan kan roepen met Trend.Super().

  • Rowwan
  • Registratie: november 2000
  • Laatst online: 22:13
Je doet niks met de klasse, je roept idd de (lege) methode Trend aan. Deze is automatisch gegenereerd omdat het anders niet compileerd.

Je moet een instantie van Trend aanmaken:
Trend trend = new Trend();

En dan:
trend.Super();

En daarna zul je merken dat je klasse Trend niet compileerd. Het eerste wat ik zie zijn de 2 array variabelen. Deze worden gedefinieerd in de hoofdklasse, en gebruikt in Trend. Dit gaat zo niet werken

[Voor 30% gewijzigd door Rowwan op 13-09-2020 13:04]


  • Bachatero
  • Registratie: december 2007
  • Laatst online: 13-09 15:52
OK. Dank voor de antwoorden. Ik ga er mee aan de gang en laat het resultaat weten.

  • Kwistnix
  • Registratie: juni 2001
  • Laatst online: 00:49
Als je dan toch bezig bent, is het ook verstandig om je code aan te passen, zodat die voldoet aan gangbare Java code style m.b.t. naamgeving. Klasse namen (en constructor) volgens UpperCamelCase (gaat al goed), variabelen en methoden volgens lowerCamelCase.
Naast naamgeving zijn meer conventies en verschillende varianten daarop; de Oracle conventies zijn hier te vinden (H9 gaat in op naamgeving) en Eclipse heeft een eigen Java formatting ruleset, die daar op sommige punten licht van afwijkt.

  • Postman
  • Registratie: februari 2000
  • Laatst online: 23:38
Aanvulling op de opmerking van @Kwistnix : ik zou ook de Trend class voorzien van een constructor en de logica in een aparte methode stoppen.

Dan kan ik ook nog iets vinden over het gebruik van Statement ipv PreparedStatement, maar wellicht een beetje teveel allemaal in een keer.

Systeemspecs


  • bwerg
  • Registratie: januari 2009
  • Niet online

bwerg

Internettrol

Los van de stijlen, zou ik eerst eens nagaan of je alle onderliggende concepten kent/snapt. private static void Trend() { is een methode (vergelijkbaar met functies in niet objectgeoriënteerde talen), die zijn uit te voeren. public class Trend definieert een klasse, die is niet "uit te voeren". Een klasse is een blauwdruk van objecten van die klasse, en met new Trend() maak je zo'n object aan. Met Trend trend = new Trend() ken je dat object toe aan variabele trend, en met trend.Trend() roep je methode Super() in de Trend-klasse aan op object trend.

Goede structuur en naamgeving heeft pas zin als je weet hoe je alles moet lezen.

Heeft geen speciale krachten en is daar erg boos over.


  • NC83
  • Registratie: juni 2007
  • Laatst online: 18:13
bwerg schreef op maandag 14 september 2020 @ 21:56:
Met Trend trend = new Trend() ken je dat object toe aan variabele trend
Kleine correctie met dat statement maak je een object van type Trend aan en kent het toe aan variable trend. Door het aanmaken van het object voer je ook de constructor van dat object uit. Dit is belangrijk als je initiele waarden aan variabelen in het object wil geven.

ex-FE Programmer: CMR:DiRT2,DiRT 3, DiRT Showdown, GRID 2, Mad Max

Pagina: 1


Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True