Pomoc - konštruktor v Jave

Programovacie jazyky, rady, poradňa...
macher1
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 38
Registrovaný: 07 jún 2011, 19:36

Pomoc - konštruktor v Jave

Príspevok od používateľa macher1 »

Dobrý večer.

Robím kalkulačku v jave. Vytvoril som dve triedy (Kalkulacka+Konzola). Trieda Konzola odkazuje na Kalkulacka, ale pri komprimácií vypíše

Kód: Vybrať všetko

constructor Kalkulacka in class Kalkulacka cannot be applied to given types; 
required: no arguments
found: double
reason: actual and formal parameters lists differ in length
Konštruktor Kalkulacka vyzerá takto:

Kód: Vybrať všetko

public void kalkulacka(double paValue)
    {
        x = 0;
        double result = paValue;
    }
a miesto kde mi túto chybu vypíše je

Kód: Vybrať všetko

    public void run()
    {
           Scanner sc=new Scanner(System.in);
           System.out.print("\f");
           double x=sc.nextDouble();
           calc=new Calculator(x); //tu oznaci chybu
           String s="";
           do {
                String s=sc.next();
                switch(s.charAt(0)).........atd.
Poradí niekto?
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa mirak2 »

konstruktor sa vola tak ako trieda a nema navratovu hodnotu teda pred nazvom nie je ziaden void ani int ani double ani nic (public, private, protected moze byt)...
takze mas mat konstruktor v triede Kalkulacka, co sa vola Kalkulacka a ma vyzerat nejak takto: public Kalkulacka(double value)
PS: kompilacia, nie komprimacia
Zappir
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 498
Registrovaný: 17 aug 2008, 9:38
Bydlisko: Praha / Prievidza

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa Zappir »

Kód: Vybrať všetko

public Calculator(double paValue)
    {
        x = 0;
        double result = paValue;
    }
by mal byt konstruktor ne to co tu mas ty, okrem toho ten atribut result je nanic ako aj cely konstruktor
macher1
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 38
Registrovaný: 07 jún 2011, 19:36

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa macher1 »

Urobil som zmeny v konštruktore. Teraz je chybové hlásenie skoro rovnaké:

Kód: Vybrať všetko

constructor Kalkulacka in class Kalkulacka cannot be applied to given types;
required: no arguments double
found: no arguments
reason: actual and formal parameters lists differ in length
:(
Možno budete múdrejší keď uvidíte viac zo zdrojáka, takže

Kód: Vybrať všetko

           Scanner sc=new Scanner(System.in);
           System.out.print("\f");
           double x=sc.nextDouble();
           calc=new Calculator();
           String s=sc.next();
           do {
                switch(s.charAt(0))
                {
                    case '+':
                     x=sc.nextDouble();
                    calc.add(s.charAt(0));
                    System.out.print(calc.getResult());
                    break;
A konštruktor teda vyzerá

Kód: Vybrať všetko

public Kalkulacka(double paValue)
    {
        x = 0;
        result = paValue;
    }
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa mirak2 »

daj tu cele triedy, s tym, ze napis aj co sa ako vola. lebo mas v tom ocividne hokej a my mame hokej z teba.
macher1
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 38
Registrovaný: 07 jún 2011, 19:36

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa macher1 »

Ok

Kód: Vybrať všetko


public class Calculator
{
    // instance variables - replace the example below with your own
    private int x;
    private double result;
    private double exponent;
    /**
     * Constructor for objects of class calculator
     */
   
    public Calculator(double paValue)
    {
        double x;
        result = paValue;
    }
    
    public void add(double paIn)
    {
        result+=paIn;
    }
    
    public void subtruct(double paIn)
    {
        result-=paIn;
    }
    
    public void multiple(double paIn)
    {
        result*=paIn;
    }
    
    public void divide(double paIn)
    {
        result /=paIn;
    }
    
    public void sqrt()//odmocnina
    {
        result = Math.sqrt(result);
    }
    
    public void pow(int exponent)//mocnina
    {
        double base=result;
        result=1;
        for(int i=0;i<exponent;i++)
        result *=base;
        //result=Math.pow(a,b);
    }
    
    public void display()
    {
        System.out.print(result);
        System.out.println();
    }
    public double getResult()
    {
        return result;
    }
}
A druhá

Kód: Vybrať všetko

import java.util.Scanner;
public class CalculatorConsole
{
   public CalculatorConsole()//konstruktor
    {
        
    }
    private Calculator calc;    
    public void run()
    {
           Scanner sc=new Scanner(System.in);
           System.out.print("\f");
           double x=sc.nextDouble();//stadialto taha cisla
           calc=new Calculator();
           String s=sc.next();//stadialto taha znaky
           do {
                switch(s.charAt(0))
                {
                    case '+':
                     x=sc.nextDouble();
                    calc.add(s.charAt(0));
                    System.out.print(calc.getResult());
                    break;
                    
                    case '-':
                     x=sc.nextDouble();
                    calc.subtruct(s.charAt(0));
                    System.out.print(calc.getResult());
                    break;
                    
                    case '*':
                     x=sc.nextDouble();
                    calc.multiple(s.charAt(0));
                    System.out.print(calc.getResult());
                    break;
                    
                    case '/':
                     x=sc.nextDouble();
                    calc.divide(s.charAt(0));
                    System.out.print(calc.getResult());
                    break;
                    
                    case 'o':
                     x=sc.nextDouble();
                    calc.sqrt(s);
                    break;
                    
                    case 'm':
                     x=sc.nextDouble();
                    calc.pow(s.charAt(0));
                    System.out.print(calc.getResult());
                    break;
                    
                    
                    //System.out.print(calc.getResult());
                }
                
    }while(s.equals("q"));
}
}
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa mirak2 »

- nemas main, ako to chces spustit?
- switch ma mat aj default vetvu, tu ktora sa spusti ak tam zadas nieco ine.
- konstruktor v Console ti netreba. rovnako aj nemusis mat v nej Calculator ako instancnu premennu
- co su instancne premenne v Calculator? uvedomujes si, ze mas instancnu premennu x, ktora je integer, a v konstruktore si urobis premennu x, ktora je double? co to ma byt? ten exponent ti je tiez naco?
- vo while cykle nemal by si tam mat aj to nacitavanie z konzoly?
logika - cele zle.
macher1
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 38
Registrovaný: 07 jún 2011, 19:36

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa macher1 »

Fúha. No dobre. Keď je to celé zle nechápem prečo sme to takto robili v škole na cvičení.
Mimochodom, main tam ani nemusí byť, v BlueJ sa to dá spustiť aj bez main a aj to išlo. Len tie výpočty nevychádzajú...
Ale vďaka za rady :wink:
Viper
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 137
Registrovaný: 14 mar 2012, 13:19

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa Viper »

macher1 napísal: Mimochodom, main tam ani nemusí byť, v BlueJ sa to dá spustiť aj bez main a aj to išlo. Len tie výpočty nevychádzajú...
Ale vďaka za rady :wink:
To si robíš srandu to že ti to nejaký kompilér spusti aj tak to neznamená že je to dobre tvl. Funkcia main() je základ každého programu
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa javatar »

vzhladom na to ze by v nej zavolal len jeden .run() a na to, ze to robi do skoly a nie do praxe (platenej ci neplatenej) tak ju moze pokojne vynechat a vyuzit featurku prostredia...
Viper
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 137
Registrovaný: 14 mar 2012, 13:19

Re: Pomoc - konštruktor v Jave

Príspevok od používateľa Viper »

Aj tak si nemyslím že je to OK nemal by to robiť takto
Napísať odpoveď