I en opgave skal jeg beregne et areal. Jeg synes at det går ok indtil jeg skal til at udskrive det samlede areal: Hvis jeg kan få fat i mine variable i klasse CompositeFigure så jeg kan bruge dem i main() ville opgaven være løst.
Jeg er blevet nød til at lave dem static for at kunne hente dem ind i main, men er det dér det går galt? Jeg kan bruge dem i den nuværende main hvis jeg giver dem en værdi i CompositeFigure, men de bliver ikke ændret af metoderne addfigure og subtractfigure.
Jeg mener at det kan lade sig gøre at lave programmet sådan her, men kan se at jeg ikke kalder addFigure og subtractFigure...men jeg har ikke mere tid (det er en del af et eksamenssæt, og jeg skal lave meget, meget mere), så er der nogen, der kan lave opgaven færdig udfra mit opkast.
Venligst
import java.util.*;
public class AreaCalculator { public static void main(String[] args) { double totalArea = 0; totalArea = CompositeFigure.adds - CompositeFigure.subtracts; System.out.println( "totalArea = " + totalArea ); System.out.println(CompositeFigure.adds + CompositeFigure.subtracts);
}
}
interface Figure { public double getArea(); }
class CompositeFigure implements Figure { public static double adds = 2; public static double subtracts = 2; public static double area = 0;
public double addFigure() { List addFigures = new ArrayList(); addFigures.add( new Triangle( 2, 5 ) ); addFigures.add( new Triangle( 2, 5 ) ); addFigures.add( new Rectangle( 5, 10 ) ); double adds; for( int i = 0; i < addFigures.size(); i ++) { Figure f = (Figure) addFigures.get(i); adds += f.getArea(); } System.out.println(adds); return adds;
} public double subtractFigure() { List subtractFigures = new ArrayList(); subtractFigures.add( new Circle ( 2 ) ); subtractFigures.add( new Circle ( 2 ) ); subtractFigures.add( new Rectangle ( 4, 3 ) ); double subTotalArea = 0; for( int i = 0; i < subtractFigures.size(); i ++) { Figure f = (Figure) subtractFigures.get(i); subtracts += f.getArea(); } return subtracts; } public double getArea() { return area; } } class Circle implements Figure{ double radius; Circle( double r ){ this.radius = r; } public double getArea(){ return radius * radius * 3.14; } }
Nu er det nok de færreste der synes det er sjovt at stikke fingrene i andre menneskers opkast :-))
Men jeg holdt mig for næsen og kikkede nok til at se at du aldrig laver een eneste instans i main af nogen af af de andre klasser. Og når du ikke gør det kan du aldrig bruge andet end statiske variable og metoder fra dem.
Og det er forhåbentlig nok hjælp til at du kan lave dit hjemmearbejde færdigt selv.
Tak for hjælpen. Det skal måske lige siges at det altså ikke er en opgave der skal afleveres, men ét ud af syv eksamenssæt jeg arbejder mig igennem inden min eksamen den 13.1: Det er altså ikke "Gider I ikke lige at lave mine lektier for mig?" :o)
public String toString(){ String s = "[Account no " + id +"]"; for( int n = 0; n < actions.size(); n++ ){ s += "\n" + actions.get(n).toString(); } return s; } }
interface Action{ public void workOn( Account ba ); }
class Insert implements Action{ private double amount; private double totalBeforeAction;
Insert( double a ){ this.amount = a; }
public void workOn( Account ba ){ totalBeforeAction = ba.total; ba.total = ba.total + amount; }
public String toString(){ String s = "Inserted " + amount; s += ", new total is (" + totalBeforeAction; s += " + " + amount + ") = "; s += (totalBeforeAction + amount); return s; } }
Ja Ja. klassen CompositeFigure er en figur ligesom cirkel og trekant. så dens getArea metode skal også returnere et areal:
public double getArea() { return area +adds -subtracts; }
så er der heller ingen grund til at lave adds og subtracts statisk de bruges jo kin i objektet selv.
så din main metode bliver vel noget i retning af:
public static void main(String[] args) { CompositeFigure cf = new CompositeFigure(); System.out.println( "totalArea fra ny = " + cf.getArea() ); cf.addFigure(); System.out.println( "totalArea efter add = " + cf.getArea() ); cf.subtractFigure(); System.out.println( "totalArea efter sugtract = " + cf.getArea() ); }
men jeg tror nu meningen er at addFigure og subtractFigure metoderne skal have et Figure objekt som parameter, og det er så det det bliver lagt til eller trukket fra.
fordi sidste linie i metoden TestAccount siger accaouts toString skal køre: System.out.println( account1.toString() ); og Accounts tostring siger at actions tostring skal køre: s += "\n" + actions.get(n).toString();
mvh JakobA
Synes godt om
Ny brugerNybegynder
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.