Avatar billede lucullus Nybegynder
13. december 2005 - 22:55 Der er 12 kommentarer og
1 løsning

Kompileringsfejl - class expected

Jeg sidder og er ved at kompilere et program, men får følgende besked:

C:\Java\program\eksamensopgave>javac Studerende.java
Studerende.java:103: class expected
        this.sutilskud        = double.parsedouble(input);
                                      ^
Studerende.java:105: class expected
        this.suungtilskud    = double.parsedouble(input);
                                      ^
Studerende.java:113: class expected
        this.vualdertilskud  = double.parsedouble(input);
                                      ^
Studerende.java:115: class expected
        this.vuekstratilskud  = double.parsedouble(input);
                                      ^
4 errors

Hvorfor er det, at jeg får denne fejl, jeg har ikke lagt mine ordninger ind i deres egen klasser, de ligger på klassen Studerende?

-----------------------
Koden ser således ud:
-----------------------

import javax.swing.*;
import java.text.*;
import java.util.*; // inkl. Vector.
import java.sql.*;  // for ResultSet (eller recordset).

public class Studerende
{               
private short cpr; 
private String navn; 
private String ordning; 
private double sutilskud; 
private double suungtilskud;
private double vualdertilskud; 
private double vuekstratilskud;
private short antalpåfag; 
private Fag faget; // En studerende ligger på faget.

public Studerende() 
{                 
  this.cpr  = 0;
  this.navn    = "";
  this.ordning  = "";
  this.sutilskud = 0;
  this.suungtilskud = 0;
  this.vualdertilskud = 0;
  this.vuekstratilskud = 0;
  this.antalpåfag = 0;
  this.faget      = new Fag();  // dannelse af et fag objekt indeholdende dummy data.
}                 

public Studerende(short cpr, String navn, String ordning, double sutilskud, double suungtilskud, double vualdertilskud, double vuekstratilskud, short antalpåfag)
{
  this.cpr                  = cpr;
  this.navn                = navn;
  this.ordning              = ordning;
  this.sutilskud            = sutilskud;
  this.suungtilskud        = suungtilskud;
  this.vualdertilskud      = vualdertilskud;
  this.vuekstratilskud      = vuekstratilskud;
  this.antalpåfag          = antalpåfag;
  this.faget            = new Fag();
}

public Studerende(short cpr, String navn, String ordning, double sutilskud, double suungtilskud, double vualdertilskud, double vuekstratilskud, short antalpåfag, String Fagkode, String Fagnavn, short Fagtilskudsprocent)
{
  this.cpr                  = cpr;
  this.navn                = navn;
  this.ordning              = ordning;
  this.sutilskud            = sutilskud;
  this.suungtilskud        = suungtilskud;
  this.vualdertilskud      = vualdertilskud;
  this.vuekstratilskud      = vuekstratilskud;
  this.antalpåfag          = antalpåfag;
  this.faget                = new Fag ();
  this.faget.setFag(Fagkode, Fagnavn, Fagtilskudsprocent); // lageret tildeles data ved kald af metode på objektet.   
}

public void setStuderende()
{
  String input;
  boolean cprtest    = false;
  dowhile (!cprtest); 
    {
    input                = JOptionPane.showInputDialog("Tast CPR-nummer:");
      this.cpr              = Short.parseShort(input);
    cpr cprnr         = new cpr(this.cpr);
      cprtest = cprnr.isvalid();
    }

 
  this.navn            = JOptionPane.showInputDialog("Indtast navn"); 
  this.ordning          = JOptionPane.showInputDialog("Tast ordning (VU/SU):");

Boolean ordningtest    = false;
dowhile (!ordningtest);
{

    if (ordning=="SU")
    {
    input                = JOptionPane.showInputDialog("Tast sutilskud:");
      this.sutilskud        = double.parsedouble(input); 
      input                = JOptionPane.showInputDialog("Tast suungtilskud:");
      this.suungtilskud    = double.parsedouble(input); 
    ordningtest = true;
    }

   
if (ordning=="VU")
    {
    input                = JOptionPane.showInputDialog("Tast vualdertilskud:");
      this.vualdertilskud  = double.parsedouble(input); 
      input                = JOptionPane.showInputDialog("Tast vuekstratilskud:");
      this.vuekstratilskud  = double.parsedouble(input);
    ordningtest = true;
    }

   
}

}

{
  input                = JOptionPane.showInputDialog("Tast antal på fag:");
this.antalpåfag      = Short.parseShort(input);
  this.faget.setFag();  // Faget har sin egen metode for at spørge om data.
}

public void setStuderende(short cpr, String navn, String ordning, double sutilskud, double suungtilskud, double vualdertilskud, double vuekstratilskud, short antalpåfag, String Fagkode, String Fagnavn, short fagtilskudsprocent);
{
  this.cpr                  = cpr;
  this.navn                = navn;
  this.ordning              = ordning;
  this.sutilskud            = sutilskud;
  this.suungtilskud        = suungtilskud;
  this.vualdertilskud      = vualdertilskud;
  this.vuekstratilskud      = vuekstratilskud;
  this.antalpåfag          = antalpåfag;
  faget.setFag(Fagkode, Fagnavn, Fagtilskudsprocent);
}

public void setcpr(short cpr)
{
  this.cpr = cpr;
}

public void setnavn(String navn)
{
  this.navn = navn;
}

public void setordning(String ordning)
{
  this.ordning = ordning;
}

public void setsutilskud(double sutilskud)
{
  this.sutilskud = sutilskud;
}

public void setsuungtilskud(double suungtilskud)
{
  this.suungtilskud = suungtilskud;
}

public void setvualdertilskud(double vualdertilskud)
{
  this.vualdertilskud = vualdertilskud;
}

public void setvuekstratilskud(double vuekstratilskud)
{
  this.vuekstratilskud = vuekstratilskud;
}

  public void setantalpåfag(short antalpåfag)
{
  this.antalpåfag = antalpåfag;
}

  public void setFagnavn(String Fagnavn)
{
  Fagnavn = Fagnavn;
}

  public void setFagkode(String Fagkode)
{
  Fagkode = Fagkode;
}

  public void setFagtilskudsprocent(short Fagtilskudsprocent)
{
  Fagtilskudsprocent = Fagtilskudsprocent;
}

public short getcpr()
{
  return (this.cpr);
}

public String getnavn()
{
  return (this.navn);
}

public String getordning()
{
  return (this.ordning);
}

public double getsutilskud()
{
  return (this.sutilskud);
}

public String getsutilskudPrisFormat()
{
  DecimalFormat kr_format = new DecimalFormat("#,##0.00 kr;-#,##0.00 kr", new DecimalFormatSymbols(new Locale("da", "dk")));
  return (kr_format.format(this.sutilskud));
}

public double getsuungtilskud()
{
  return (this.suungtilskud);
}

public String getsuungtilskudPrisFormat()
{
  DecimalFormat kr_format = new DecimalFormat("#,##0.00 kr;-#,##0.00 kr", new DecimalFormatSymbols(new Locale("da", "dk")));
  return (kr_format.format(this.suungtilskud));
}

public double getvualdertilskud()
{
  return (this.vualdertilskud);
}

public String getvualdertilskudPrisFormat()
{
  DecimalFormat kr_format = new DecimalFormat("#,##0.00 kr;-#,##0.00 kr", new DecimalFormatSymbols(new Locale("da", "dk")));
  return (kr_format.format(this.vualdertilskud));
}

public double getvuekstratilskud()
{
  return (this.vuekstratilskud);
}

public String getvuekstratilskudPrisFormat()
{
  DecimalFormat kr_format = new DecimalFormat("#,##0.00 kr;-#,##0.00 kr", new DecimalFormatSymbols(new Locale("da", "dk")));
  return (kr_format.format(this.vuekstratilskud));
}

  public short getantalpåfag()
{
  return (this.antalpåfag);
}

  public String getFagnavn()
{
  return (Fagnavn);
}

  public String getFagkode()
{
  return (Fagkode);
}

  public short getFagtilskudsprocent()
{
  return (Fagtilskudsprocent);


public boolean getStuderende(short findcpr)
// GØR:  På basis af indparameteren findVareNummer findes oplysninger om varen og dets lager
//        i databasen, og oplysningerne tildeles det vare objekt som metoden kaldes på.
//        Så kan oplysningerne senere udtages fra objektet via get metoder eller vises på
//        skærmen via toString eller showVare metoderne.
// RETUR: Der returneres true hvis varen fandtes i databasen ellers false.
{
  boolean fundet = false;
  ResultSet resultSet;
  String sql;

  sql =  "SELECT Studerende.cpr, Studerende.navn, Studerende.ordning, Studerende.sutilskud, Studerende.suungtilskud, Studerende.vualdertilskud, Studerende.vuekstratilskud, Studerende.antalpåfag, Fag.Fagkode, Fag.Fagnavn, Fag.Fagtilskudsprocent ";
  sql += "FROM Studerende INNER JOIN Fag ON Studerende.Fagkode = Fag.Fagkode ";
  sql += "WHERE cpr = '" + findcpr + "';";

  DB db = new DB();                  // skabelse af forbindelse til databasen via et objekt db.
  db.openDBConnection();            // åbne forbindelsen.
  try
  {
  resultSet = db.getResultSet(sql); // sende sql sætning til db objektet og få resultset/recordset retur.
  if (resultSet.next())
      {
      setcpr(resultSet.getShort("cpr"));
      setnavn(resultSet.getString("navn"));
      setordning(resultSet.getString("ordning"));
      setsutilskud(resultSet.getdouble("sutilskud"));
      setsuungtilskud(resultSet.getdouble("suungtilskud"));              // tildeling af lageret objektet via
      setvualdertilskud(resultSet.getdouble("vualdertilskud"));        // metoder her i Vare klassen.     
      setvuekstratilskud(resultSet.getdouble("vuekstratilskud"));              // tildeling af lageret objektet via
      setantalpåfag(resultSet.getShort("antalpåfag"));        // metoder her i Vare klassen.
      setFagkode(resultSet.getString("Fagkode"));              // tildeling af lageret objektet via
      setFagnavn(resultSet.getString("Fagnavn"));        // metoder her i Vare klassen.     
      setFagtilskudsprocent(resultSet.getShort("Fagtilskudsprocent"));        // metoder her i Vare klassen.                   
      fundet = true;
      }
  resultSet.close();      // lukke resultset/recordset.
  }
  catch (SQLException e)
  {
  System.out.println("Fejl i udførelsen af SQL."+e);
  }
  db.closeDBConnection();  // lukke forbindelsen til databasen.
  return(fundet);          // db objektet bliver nedlagt automatisk, da det er et lokalt objekt i denne metode
}                        // og forsvinder ud af hukommelsen via garbage collector.

public Vector getStuderende()
// GØR:  Finder alle vare oplysninger i databasen og indsætter dem som vare objekter i en vektor.
//        Der ændres ikke på tilstanden af det vare objekt metoden kaldes på.
// RETUR: En vektor med vare objekter indeholdende data.
{
  Vector list = new Vector();
  ResultSet rs;
  String sql;

  sql =  "SELECT Studerende.cpr, Studerende.navn, Studerende.ordning, Studerende.sutilskud, Studerende.suungtilskud, Studerende.vualdertilskud, Studerende.vuekstratilskud, Studerende.antalpåfag, Fag.Fagkode, Fag.Fagnavn, Fag.Fagtilskudsprocent ";
  sql += "FROM Studerende INNER JOIN Fag ON Studerende.Fagkode = Fag.Fagkode ";
  sql += "ORDER BY Studerende.cpr;";

  DB db = new DB();
  db.openDBConnection();
  try
  {
  rs = db.getResultSet(sql);
  while (rs.next())
    { // skabelse af vare objekt i hukommelsen og referencen til objektet indsættes i vektoren,
      // så garbage collector ikke sletter objektet når metoden er færdig.
      Studerende s = new Studerende(rs.getShort("cpr"), rs.getString("navn"), rs.getString("ordning"), rs.getdouble("sutilskud"), rs.getdouble("suungtilskud"),rs.getdouble("vualdertilskud"),rs.getdouble("vuekstratilskud"),rs.getShort("antalpåfag"), rs.getString("Fagkode"),rs.getString("Fagnavn"),rs.getShort("Fagtilskudsprocent"));           
      list.addElement(s);
    }
  rs.close();
  }
  catch (SQLException e)
  {
  System.out.println("Fejl i udførelsen af SQL."+e);
  list = null;
  }
  db.closeDBConnection();
  return (list);
}

public Vector getStuderendepåFag(short findFagkode)
// GØR:  På basis af indparameteren findLagerId findes alle varepriser fra databasen
//        og indsættes som double objekter i en vektor, da vektor kun kan indeholde objekter.
//        Der ændres ikke på tilstanden af det vare objekt metoden kaldes på.
// RETUR: En vektor med double objekter indeholdende priser på varer fra lageret findLagerId.
{
  Vector list = new Vector();
  ResultSet rs;
  String sql;

  sql =  "SELECT Studerende.Fagnavn ";
  sql += "FROM Studerende ";
  sql += "WHERE Fagkode = " + findFagkode + ";";

  DB db = new DB();
  db.openDBConnection();
  try
  {
  rs = db.getResultSet(sql);
  while (rs.next())
    {
      list.addElement(new String(rs.getString("Fagnavn")));
    }
  rs.close();
  }
  catch (SQLException e)
  {
  System.out.println("Fejl i udførelsen af SQL."+e);
  list = null;
  }
  db.closeDBConnection();
  return (list);
}

public boolean saveStuderende()
// GØR:  Gemmer pågældende vare objekts oplysninger i databasen, typisk efter en indtastning
//        hvor vare objektet blev tildelt brugerens indtastninger i metoden setVare().
//        Der ændres ikke på tilstanden af det vare objekt metoden kaldes på.
// RETUR: Der returneres true hvis det lod sig gøre at gemme varen ellers false.
{
  boolean ok = false;
  String sql;

  sql =  "INSERT INTO Studerende (cpr, navn, sutilskud, suungtilskud, vualdertilskud, vuekstratilskud, antalpåfag, Fagkode) ";
  sql += "VALUES ('" + this.cpr + "','"+ this.navn + "'," + this.sutilskud + "," + this.suungtilskud + "," + this.vualdertilskud + "," + this.vuekstratilskud + "," + this.antalpåfag + "," + this.getFagkode() + ");";

  DB db = new DB();
  db.openDBConnection();
  ok = db.doExecute(sql);  // returnerer true hvis sql blev udført korrekt ellers false, f.eks.
  db.closeDBConnection();  // ved primærnøgle brud.
  return(ok);
}

public String toString()
{
  return ("\n" +
          "cpr:      " + getcpr() + "\n" +
          "navn:        " + getnavn() + "\n" +
          "sutilskud: " + getsutilskudPrisFormat() + "\n" +
          "suungtilskud: " + getsuungtilskudPrisFormat() + "\n" +
          "vualdertilskud: " + getvualdertilskudPrisFormat() + "\n" +
          "vuekstratilskud: " + getvuekstratilskudPrisFormat() + "\n" +
          "Antalpåfag:    " + getantalpåfag() + "\n" +
          "Fagnavn:    " + getFagnavn() + "\n");
}

public void showStuderende()
{
  JOptionPane.showMessageDialog(null, toString(), "Oplysning om en studerende", JOptionPane.INFORMATION_MESSAGE);
}

public void showalleStuderende()
// GØR:  Henter alle studerende oplysningerne fra databasen via metoden getStuderende() og opstiller dem i en html table.
//        Der ændres ikke på tilstanden af det studerende objekt metoden kaldes på.
{
  String s = "";
  Vector list = this.getStuderende();  // en vektor af studerende objekter for alle studerende i databasen, a la et resultset/recordset.

  if (list.size() >= 1)
    {
      s += "<html><body><table cellspacing=5 cellpadding=5>";
      s += "<tr><td>Fagkode</td><td>Fagnavn</td><td>Ordning</td><td>SUtilskud/td><td>SUungtilskud</td><td>VUaldertilskud</td><td>VUekstratilskud</td><td>Antal på fag</td></tr>";

      for(int i = 0; i < list.size(); i++)
        s += (((Studerende) list.elementAt(i)).toTable());  // for hver studerende objekt i vektoren opstilles en række i html table.

      s += "</table></body></html>";
    }
  else
    s = "Ingen Studerende.\n";

  JOptionPane.showMessageDialog(null, s, "Studerende", JOptionPane.PLAIN_MESSAGE);
}

public String toTable();
{
  return("<tr><td align=left>"+getFagkode()+"</td><td align=left>"+getFagnavn()+"</td><td align=right>"+getordning()+"</td><td align=right>"+getsutilskudPrisFormat()+"</td><td align=right>"+getsuungtilskudPrisFormat()+"</td><td align=right>"+getvualdertilskudPrisFormat()+"</td><td align=right>"+getvuekstratilskudPrisFormat()+"</td><td align=right>"+getantalpåfag()+"</td></tr>");

}
}
Avatar billede erikjacobsen Ekspert
13. december 2005 - 23:00 #1
Prøv med stort D
      this.sutilskud        = Double.parseDouble(input);
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Double.html
Avatar billede arne_v Ekspert
13. december 2005 - 23:06 #2
dowhile -> while

resultSet.getdouble -> resultSet.getDouble

semikolon væk efter toTable()
Avatar billede arne_v Ekspert
13. december 2005 - 23:11 #3
og en bedre indrykning vil gøre det nemmere at checke for for mange eller for få {}
Avatar billede erikjacobsen Ekspert
13. december 2005 - 23:16 #4
Og ikke
  if (ordning=="SU")
Du skal huske at bruge at bruge .equals
Avatar billede lucullus Nybegynder
13. december 2005 - 23:34 #5
Erik + arne_v: Beklager det med indrykningen :-)

dowhile -> while (Rettet)

resultSet.getdouble -> resultSet.getDouble (Rettet)

semikolon væk efter toTable() (Rettet)

Du skal huske at bruge at bruge .equals (OK)

Nå, nu får jeg så til gengæld lidt ekstra fejl:

C:\Java\program\eksamensopgave>javac Studerende.java
Studerende.java:77: cannot resolve symbol
symbol  : method setFag (java.lang.String,java.lang.String,short)
location: class Fag
  this.faget.setFag(Fagkode, Fagnavn, Fagtilskudsprocent); // lageret tildeles data ved kald af metode pÕ objektet.
  ^
Studerende.java:88: cannot resolve symbol
symbol  : constructor cpr (short)
location: class cpr
        cpr cprnr              = new cpr(this.cpr);
                                  ^
Studerende.java:89: cannot resolve symbol
symbol  : method isvalid ()
location: class cpr
        cprtest = cprnr.isvalid();
                      ^
Studerende.java:96: incompatible types
found  : boolean
required: java.lang.Boolean
Boolean ordningtest    = false;
                          ^
Studerende.java:97: operator ! cannot be applied to java.lang.Boolean
while (!ordningtest);
      ^
Studerende.java:106: incompatible types
found  : boolean
required: java.lang.Boolean

16 errors
Avatar billede arne_v Ekspert
13. december 2005 - 23:36 #6
Boolean ordningtest

skal nok være

boolean ordningtest
Avatar billede arne_v Ekspert
13. december 2005 - 23:43 #7
hvordan ser Fag setFag ud ?
Avatar billede lucullus Nybegynder
13. december 2005 - 23:44 #8
Fag.java ser således ud:

import javax.swing.*;

public class Fag
{               

private String Fagkode;      // svarer til Integer i Access.
private String Fagnavn;    // svarer til Text i Access.
private short Fagtilskudsprocent;      // svarer til Integer i Access.

public Fag() 
{                 
  this.Fagkode  = "";
  this.Fagnavn = "";
  this.Fagtilskudsprocent = 0;
}                 

public Fag(String Fagkode, String Fagnavn, short Fagtilskudsprocent)
{
  this.Fagkode  = Fagkode;
  this.Fagnavn = Fagnavn;
  this.Fagtilskudsprocent = Fagtilskudsprocent;
}

public void setFag()
{
  String input;

  input        = JOptionPane.showInputDialog("Tast Fagtilskudsprocent:");
  this.Fagtilskudsprocent = Short.parseShort(input);
 
  this.Fagnavn = JOptionPane.showInputDialog("Tast Fagnavn:"); 
  this.Fagkode = JOptionPane.showInputDialog("Tast Fagkode:");
 
}

public void setFag(String Fagkode, String Fagnavn)
{
  this.Fagkode  = Fagkode;
  this.Fagnavn = Fagnavn;
}

public void setFagkode(String Fagkode)
{
  this.Fagkode = Fagkode;
}

public void setFagnavn(String Fagnavn)
{
  this.Fagnavn = Fagnavn;
}

public String getFagkode()
{
  return (this.Fagkode);
}

public String getFagnavn()
{
  return (this.Fagnavn);
}

public String toString()
{
  return ("\n" +
          "Fagkode:      " + this.Fagkode + "\n" +
          "Fagnavn:    " + this.Fagnavn + "\n");
}

public void showFag()
{
  JOptionPane.showMessageDialog(null, toString());
}

}
Avatar billede arne_v Ekspert
13. december 2005 - 23:54 #9
Fag setFag findes med 0 og 2 argumenter

du kalder den med 3
Avatar billede lucullus Nybegynder
14. december 2005 - 00:27 #10
Dooh! Jeg har rettet Fag.java  ... kompileret ok.

-------

import javax.swing.*;

public class Fag
{               

    private String Fagkode;      // svarer til Integer i Access.
    private String Fagnavn;    // svarer til Text i Access.
    private short Fagtilskudsprocent;      // svarer til Integer i Access.

    public Fag() 
        {                 
            this.Fagkode              = "";
            this.Fagnavn              = "";
            this.Fagtilskudsprocent  = 0;
        }                 

    public Fag(String Fagkode, String Fagnavn, short Fagtilskudsprocent)
        {
            this.Fagkode            = Fagkode;
            this.Fagnavn            = Fagnavn;
            this.Fagtilskudsprocent = Fagtilskudsprocent;
        }

    public void setFag()
        {
            String input;

            input                  = JOptionPane.showInputDialog("Tast Fagtilskudsprocent:");
            this.Fagtilskudsprocent = Short.parseShort(input);
 
            this.Fagnavn            = JOptionPane.showInputDialog("Tast Fagnavn:"); 
            this.Fagkode            = JOptionPane.showInputDialog("Tast Fagkode:");
 
        }

    public void setFag(String Fagkode, String Fagnavn, short Fagtilskudsprocent)
        {
            this.Fagkode            = Fagkode;
            this.Fagnavn            = Fagnavn;
            this.Fagtilskudsprocent = Fagtilskudsprocent;
        }

    public void setFagkode(String Fagkode)
        {
            this.Fagkode = Fagkode;
        }

    public void setFagnavn(String Fagnavn)
        {
            this.Fagnavn = Fagnavn;
        }

    public void setFagtilskudprocent(short Fagtilskudsprocent)
        {
            this.Fagtilskudsprocent = Fagtilskudsprocent;
        }

    public String getFagkode()
        {
            return (this.Fagkode);
        }

    public String getFagnavn()
        {
            return (this.Fagnavn);
        }

    public short getFagtilskudsprocent()
        {
            return (this.Fagtilskudsprocent);
        }

    public String toString()
        {
            return ("\n" +
            "Fagkode:              " + this.Fagkode + "\n" +
            "Fagnavn:              " + this.Fagnavn + "\n" +
            "Fagtilskudsprocent:    " + this.Fagtilskudsprocent + "\n");
        }

    public void showFag()
        {
            JOptionPane.showMessageDialog(null, toString());
        }
}
Avatar billede lucullus Nybegynder
21. december 2005 - 15:53 #11
Hej arne_v + erikjacobsen ... Mange tak for hjælpen til Jer begge! Gider I smide et svar, så jeg kan komme af med lidt point.
Avatar billede arne_v Ekspert
21. december 2005 - 15:55 #12
svar
Avatar billede erikjacobsen Ekspert
21. december 2005 - 17:27 #13
Jeg samler slet ikke på point, tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester