Kann hier wer Java proggen? Bräuchte bitte Hilfe

cashgnm

Battle for the sun
ID: 88282
L
29 April 2006
1.364
108
hallo.
brauche bitte hilfe bei einigen beispielen und hab leider keinen blassen schimmer..
mein problem ist vor allem, dass ich nicht weiß, wie ich etwas als konstruktur anschreibe.

lose hab ich leider fast keine mehr, noch ca. ne mio, falls was benötigt wird als gegenleistung

biitte helfen :)



2. Erzeuge eine Klasse Zahl mit einem Integer-Feld z
Schreibe einen Konstruktor mit einem Parameter, der z eine positive Integerzahl zuweist. Schreibe folgende Methoden:
void verdoppeln: Diese Methode soll z verdoppeln
int addiere(int x): Diese Methodeo soll x zu z addieren
int summe: Diese Methode soll das Ergebnis 1+2+…+z liefern
int produkt : Diese Methode soll das Ergebnis 1*2*3*…*z liefern (z!)
void fibonacci :Folge der Fibonacci Zahlen bis z ausgeben:
f(1)=1, f(2)=1,…f(n)=f(n-2)+f(n-1); das ergibt zum Beispiel:
1, 1, 2, 3, 5, 8, 13, 21, 34, ….

5. Erzeuge eine Klasse vektor mit double Feldern für die Koordinaten x und y. Schreibe einen Konstruktor, der einen Vektor mit Werten für x und y initialisiert.
Schreibe weiters folgende Methoden:
double betrag : liefert den Betrag des Vektors
void einheitsvektor: erzeugt den Einheitsvektor
void summiere(vektor a) : addiert zum gegebenen den Vektor a
void normalvektor: macht aus dem gegebenen den Normalvektor

6. Gegeben ist die Klasse rechteck mit Konstruktor:
class rechteck3 {
double x, y, breite, hoehe;
public rechteck(double xx,double yy,double br,double ho){
this.x=xx;
this.y=yy;
this.breite=br;
this.hoehe=ho;
}
x,y die Koordinaten des Eckpunktes A
Schreibe folgende Methoden:
void vergroessern (double k) Diese Methode soll das Rechteck um den Faktor k vergrößern (verkleinernern)
void verschiebe (double dx, double dy) Diese Methode soll das Rechteck um dx,dy verschieben
double flaeche() Diese Methode soll die Fläche des Rechtecks berechnen, aber nicht ausgeben
double umfang() Diese Methode soll den Umfang des Rechtecks berechnen, aber nicht ausgeben
void ausgabe() Diese Methode soll die Koordinaten von A, breite, hoehe, fläche, umfang des Rechtecks ausgeben
In der main methode sollen zwei rechteck-Instanzen mit unterschiedlichen x,y,breite,hoehe erzeugt werden. Zur Kontrolle sollen die Rechteck-Daten ausgegeben werden.
Anschließend soll das erste Rechteck vergrößert und das zweite gedreht werden. Danach soll für jedes Rechteck wieder ausgabe() ausgeführt werden.

7. Schreibe eine Java-Applikation, die die Funktion y=cos(2x) graphisch im Intervall [0,2] darstellt. Die Achsen sollen auch skaliert werden. (Vorlage grafikdemo)

8. Schreibe eine Java-Applikation, die folgendes leistet:
Nachdem mach auf 3 beliebige Punkte auf dem Bildschirm geklickt hat, soll ein Dreieck mit diesen Punkten als Eckpunkte gezeichnet werden. Wenn man auf einen zu erzeugenden Button „+“ klickt, soll dieses Dreieck um 20 % vergrößert werden. Wenn man das aktive Fenster schließt, soll das Programm beendet werden.
 
mein problem ist vor allem, dass ich nicht weiß, wie ich etwas als konstruktur anschreibe.
Der Konstruktor ist eine Methode, die wie die Klasse heißt:
PHP:
public class Foo
{
  /**
   * Konstruktor
   */
  public Foo()
  {

  }
}
Wenn du meinst, du findest hier n Dummen, der dir deine Hausaufgaben macht, vergiss es, denn da mach ich hier gleich zu :evil:

Fragen kannst du stellen, wenn du was nicht verstehst, dafür gibt es dieses Forum. Aber arbeiten wirst du wohl selber müssen.
 
oki, stimmt natürlich.. mein problem ist bloß, ich hab relativ wenig ahnung von alledem.

naja, hab mich mal am 2. bsp versucht, da wir etwas ähnliches mal mit brüchen gemacht haben.
haut leider nicht ganz hin.. (fibonacci folge hab ich noch ausgelassen)

Code:
public class zahlbsp{
	int zahl;
	public zahlbsp(int z,int x){
		this.zahl=z;
		this.xzahl=x;
		public void verdoppeln(){
			zahl=zahl*2;
		public int addiere(){
			zahl=zahl+xzahl;
		public int summe(){
			for(t=0;t<zahl;t=t+t)
	
		public int produkt(){
			for(t=0;t<zahl;t=t*t)
		}
		
		public void ausgabe(){
			System.out.println("zahl:"+zahl);
			}
		
		}
		public static void main(String args[])
		{zahl z1=new zahl(6);
		z1.ausgabe();
		z1.addiere();
		z1.ausgabe();
		}}}}}


gemeckert wird schon beim public void verdoppeln :(



das ist im übrigen das bruchbsp, woran ich mich orientiert habe:
Code:
public class bruch{
long zaehler, nenner;
public bruch(long z, long n){ //konstruktor - legt fest welche werte die felder im programm haben werden.
 this.zaehler=z;
 this.nenner=n;} //konstruktor ende
 public long ggt(){
  long z=zaehler,n=nenner;
  while (z!=n)
  {if(z>n) {z=z-n;}
  else {n=n-z;}
  }
  return z;}
 public void kuerzen(){
  long g=this.ggt(); //bei einer methode wird immer ein () angehängt
  zaehler=zaehler/g;
  nenner=nenner/g;}
 public void ausgeben(){
  System.out.println(zaehler+"/"+nenner);
  }
 public void next(){
  System.out.println("\n");
 }
 public void erweitern(){
  long e;
  e=StdInput.readInt("Zahl mit der erweitert werden soll: ");
  zaehler=zaehler*e;
  nenner=nenner;
  }
 public void multi(){
   long g,h;
   System.out.println("Der Bruch soll multipliziert werden.");
   g=StdInput.readInt("Zaehler: ");
   h=StdInput.readInt("Nenner: ");
   nenner=nenner*h;
   zaehler=zaehler*g;
  }
 public void add(){
  long a,b;
  System.out.println("Eine Zahl soll addiert werden.");
  a=StdInput.readInt("zaehler: ");
  b=StdInput.readInt("nenner: ");
  zaehler=zaehler*b+a*nenner;
  nenner=nenner*b;
 }
 public static void main(String args[])
 {bruch b5=new bruch(3,4);
 b5.ausgeben();
 b5.add();
 b5.kuerzen();
 b5.ausgeben();
 }}
 
Zuletzt bearbeitet:
Danke für den Link, werd mir das zu Gemüte führen.

Den Code hab ich nun eingerückt.

lg
 
Den Code hab ich nun eingerückt.
Dir muss doch dann auffallen, dass das "}}}}}" am Ende nicht sein kann. Irgendwas passt da mit deiner Klammerung gewaltig ned. Das sind Syntaxfehler und die zeigt dir der Compiler mit Zeilenangabe in der Fehlermeldung an.
 
public class zahlbsp{ int zahl; public zahlbsp(int z,int x){ this.zahl=z; this.xzahl=x; public void verdoppeln(){ zahl=zahl*2; public int addiere(){ zahl=zahl+xzahl; public int summe(){ for(t=0;t<zahl;t=t+t) public int produkt(){ for(t=0;t<zahl;t=t*t) } public void ausgabe(){ System.out.println("zahl:"+zahl); } } public static void main(String args[]) {zahl z1=new zahl(6); z1.ausgabe(); z1.addiere(); z1.ausgabe(); }}}}}

Das nennst du eingerückt? Das ist alles sinnlos hintereinander gereiht, da sieht man ja nicht mal ob die Klammerblöcke richtig gesetzt sind ...

Ich empfehle mal Lektion 1: Bauen Sie immer einen sinnvoll eingrückten Quellcode, mit Kommentaren und einer anständigen Übersicht!

Edit: Hm, wars ein Anzeigefehler oder hast du das nachträglich formatiert (?)

Schau dir mal deine einzelnen Funktionen an ... eine Funktion muss in sich abgeschlossen sein {} und kann nicht die Definition einer neuen Methode beinhalten.
 
@Cybo:
Wo hastdn das her ? Der obere Code, also der von ihm ist - mehr oder weniger - ordentlich.

@cashgnm:
Sun hat eine Code-Convention herausgegeben, die genau festlegt, wie ordentlicher Java-Code auszusehen hat. Nachzulesen ist das hier:
https://java.sun.com/docs/codeconv/
 
@Cybo:
Wo hastdn das her ? Der obere Code, also der von ihm ist - mehr oder weniger - ordentlich.

Der Quellcode wurde mir so hier angezeigt, daher war ich ein wenig überrascht. Vielleicht gabs nen Übertragungsfehler, jetzt seh ich den Quellcode nämlich mehr oder weniger sinnvoll strukturiert.

Wie gesagt schließe deine Klammern erstmal richtig, danach kannst du dich an die anderen Probleme setzen und der gute Fiboalgo ist ja auch recht einfach, du musst ja nur 1 1 2 3 5 8 13 21 34... ausgeben
 
Ich frage mich wie du die Vorlage geändert hast?

Auszug aus deiner geänderten Version
PHP:
public void verdoppeln(){ // Beginn Methode "verdoppeln"
			zahl=zahl*2;
		public int addiere(){ // Beginn Methode "addiere"


PHP:
public void ausgeben(){ // Beginn Methode "ausgeben"
  System.out.println(zaehler+"/"+nenner);
  } // Ende Methode ausgeben
 public void next(){ // Beginn Methode "next"
  System.out.println("\n");
 } // Ende Methode "next"

Das soll nur eine Denkhilfe geben, eigentlich sollte das schon reichen:

Dir muss doch dann auffallen, dass das "}}}}}" am Ende nicht sein kann. Irgendwas passt da mit deiner Klammerung gewaltig ned. Das sind Syntaxfehler und die zeigt dir der Compiler mit Zeilenangabe in der Fehlermeldung an.
 
jungs, vielen dank für eure hilfe... hab mir die hilfen angeguckt (auch von anderen foren) und heut mit einem freund den ganzen tag durchgerackert und mittlerweile wirds immer besser...
einzig allein fehlen mir nun noch beim 2.bsp die fibonacci folge und beim 8.bsp der button, mit dem ich das dreieck um 20% vergrößere.

das 2. bsp wär dieses hier:

Code:
public class bsp2{
/****************Elementvariablen************/
int zahl;
int xzahl;

/****************Konstruktor************/
public bsp2(int z,int x){  
this.zahl=z;
this.xzahl=x;
}

/****************Methoden************/
public void verdoppeln(){
zahl=zahl*2;
System.out.println("Die Zahl z wird verdoppelt:   "+zahl);
}
public int addiere(){
return zahl+xzahl;
}
public int summe(){
int a=0;
for (int i=0;i<=this.zahl;i++) a=a+i;
return a;
}

public int produkt()
{
int i;
int e = 1;

for ( i=1; i<=this.zahl; i++ )
{
e=e*i;
}
return e;
}



public void ausgabe(){
System.out.println("Ausgangszahl z :"+zahl+ "\nZahl x, die später dazu addiert wird: " + xzahl+"\n\n");
System.out.println("Summe von 1+2+...+z:   " +this.summe());
System.out.println("Multiplikation von 1*2*...*z:   " +this.produkt());
System.out.println("Zahl z addiert mit Zahl x:   "+this.addiere());
}


public static void main(String args[])
{
bsp2 z1=new bsp2(4,5);
z1.ausgabe();
z1.verdoppeln();



}
}

ein freund, der java halbwegs beherrscht, hat mir das hier geschrieben, was aber bei mir nicht ganz hinhaut und außerdem versteh ich es sowieso nicht, vielleicht geht das auch einfacher? (in etwa so wie die anderen methoden)
Code:
public integer fibonacci(integer arg) {
if(arg) < 2) return 1;
return this.fibonacci(arg-1) + this.fibonacci(arg-2);
}
public integer fibonacci() {
return this.fibonacci(this.zahl);
}

außerdem sollte der code in void sein (laut angabe)





dann zum 8.bsp:
hier bin ich nun mal so weit gekommen, dass mit 3mausklicks das dreieck gezeichnet wird und aus einem anderen bsp, das wir mal gemacht haben, hab ich so ungefähr ne ahnung, wie man einen button macht, aber nicht wie man dem eine funktion und dgl. zuweist.
hätte nun mal einen button eingebaut, bei dem ich aber einen fehler in der 4. zeile bekomme. (ist angehängt)

Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class sa_uz_bsp_8 extends Frame implements ActionListener {
 int i=0,l;
  int x[]=new int[300];
  int y[]=new int[300];
  private void place(Component comp,int x,int y,int width,int height) {
comp.setBounds(x, y, width, height);
add(comp);
}
  public sa_uz_bsp_8() 
  {
    setSize( 800, 800 );
    Button button;
              place(button=new Button("ok"),50,120,60,20);
button.addActionListener(this);

addWindowListener( new WindowAdapter() {
      public void windowClosing ( WindowEvent e) {
        System.exit(0); }
    });     
            
            addMouseListener( new MouseAdapter()
             		{ 	public void mousePressed( MouseEvent e)
             			{	i++;
             				x[i]=e.getX();
             				y[i]=e.getY();

             				repaint();
             				
             			}
             		});
      
  }
  public void paint( Graphics g )
  {
  						
                      	g.drawLine(x[1],y[1],x[2],y[2]);
                      	g.drawLine(x[2],y[2],x[3],y[3]);
                      	g.drawLine(x[3],y[3],x[1],y[1]);

              
              }
              
              
  
  
  public static void main( String args[] )
  {
    new sa_uz_bsp_8().show();
  }
}

fehler:

Code:
Compile H:\8B_2007_08\Informatik\public_html\java\sa_uz_bsp_8.java....
H:\8B_2007_08\Informatik\public_html\java\sa_uz_bsp_8.java:4: sa_uz_bsp_8 is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener

public class sa_uz_bsp_8 extends Frame implements ActionListener {

       ^

1 error



hat vielleicht jemand ratschläge für mich? wäre euch sehr dankbar :)
 
Zu Fibonacci:
Die Folge is klar ? 1 1 2 3 5 8 13 21 34 55 ...

Die Funktion sollte Rückgabetyp void haben und nur aufzählen, d.h. es is eine Endlosschleife verlangt.

Jetzt weg von Java, jetzt is der Punkt, wo du das Hirn anschalten musst :p
Du willst jetzt jemanden diese Folge - weit weg von jedem Computer - aufsagen. Wie gehst du vor ? Was rechnest du ? Schreibs mir mal in Worten hin, was du tun würdest.

Zu Swing kann ich leider nix sagen. Ich hab Java nur für Algorithmen gebraucht, nicht für Grafik-Klickizeugs :ugly:
 
Also langsam versprachlichen...

Die Folge soll von f(1) bis f(z) gehen, also was machst du?
DU fängst mit f1 an, schreibst das Ergebnis und iterierst weiter durch.

Überlege welche Zahlen du dir merken musst um weiter zu arbeiten.
 
so, habs nun fast..

Code:
public void fibonacci()
{
int j,v,y;
     y=0;
     j=1;
     v=1;
     {System.out.println("\nFibonacci Folge:");}
     while (y<this.zahl){
     y=j+v;
     j=v;
     v=y;
	 {System.out.println(+j);}
	 
}
}

nur die begrenzung haut nicht hin.

wenn ich z=7 bspw. habe, macht er die folge trotzdem noch inkl. 8 und 13. :/

wenn ich while(y<7) eingebe, passts.. :/


edit... stimmt nun... der hat in der schleife aus irgendeinem grund statt der ausgangszahl (this.zahl) die verdoppelte genommen, weil ich ja die verdoppeln funktion vorher angewendt habe, aber dass der die dann bei der fibonacci folge verwendet ist bissl merkwürdig..

naja, habs umgedreht, jetzt stimmts.
z1.ausgabe();
z1.fibonacci();
z1.verdoppeln();