Klassen-Konstruktoren und -Methoden

Kafkalasch

Grünschnabel
Hi, ich hab gleich mal ganze 2 Fragen:

erste ist:

Ich will eineMethode schreiben, sodass sie mir die instanzvariablen aus der Tastatur einliest, siehe Beispiel:

Code:
class test
{
String information;

void einlesen()
{
BufferedReader inPut = new BufferedReader (new InputStreamReader (System.in) );
information = inPut.readLine();
}

}

Doch hier kommt mir die Meldung, dass ich eine IOException catchen oder throwen muss, oder was auch immer. Nur wie soll "throws IOException" dazuschreiben, wenn ich in der Klasse keine main() methode habe (Und auch keine haben will) ? Meine Frage ist auf jedenfall: Wie bring ich obigen Code zum laufen?


zweite Frage ist:

Ich möchte bei einer Klasse einen Konstruktor erstellen, der sich die Informationen für die Variablen aus einem bereits Bestehendem nimmt.

Genauso wie zum Beispiel aus der java.awt.Point - Klasse der Konstruktor
Point(Point pt)

Wie mach ich das?
 
Moin,

zu Problem A:

Wie schon selbst gesagt, wirft der Code eine Exception (oder halt auch mehr).
Es gibt zwei Varianten, den Code zum Laufen zu bringen.
Eine wäre, dass Du die geworfene Exception einfach "weiterreichst", nämlich bis dahin, wo diese Methode aufgerufen wird:
Code:
void einlesen() throws IOException {
[...]
}

Wenn Du diese Methode dann anderswo aufrufst, muss sie per try-catch-Block abgefangen werden - oder halt nochmals weitergereicht werden.

Variante Zwei wäre, dass Du gleich per try-catch das Ganze abfängst:

Code:
void einlesen() {
 try{
  BufferedReader inPut = new BufferedReader (new InputStreamReader (System.in) );
  information = inPut.readLine();
 } catch(IOException ex) {
  // tu was, wenn Fehler auftreten
 }
}

Problem B:

Du kannst einem Konstuktor x-beliebige Parameter mitliefern.
Dann musst Du diese Parameter auf vordefinierte Klassenvariablen übergeben.
Beispiel:

Code:
public class Rechteck {
 int rechteck_laenge;
 int rechteck_breite;
 
 public Rechteck(int laenge, int breite) {
  rechteck_laenge = laenge;
  rechteck_breite = breite;
 }

 public int berechneFlaeche() {
  return rechteck_laenge * rechteck_breite;
 }
}

Ist halt genau wie bei Methoden, wo Du Parameter übergeben kannst...
Natürlich kannst Du auch komplette Objekte übergeben und nicht nur primitive Datentypen wie in meinem Beispiel.

Gruß,
Xan
 
Problem A gelöst, aber bei Problem B hab ich noch ne Frage:


da will ich die info eines Objekts einlesen und dem neuem übergeben:

Code:
class Test
  }
    String info;

    void(Test tst)
      {
        info = new String( tst ); //Hier kommt mir die Fehlermeldung,
                       //"incompatibel types"
                       //"found: test.Test"
                       //"required: java.lang.String"
      }
  }
Also könntest du mir ein Beispielcode geben, wo eben ein neues Object erstellt wird und die Informationen aus einem bereits bestehendem einliest.

Ich danke dir schon mal dafür, dass du mir bei Problem 1 geholfen hast.
Aber wenn du mir das zweite auch noch erklärst wär das ur nett =)
 
Zuletzt bearbeitet:
Code:
public class Test{

private String information;

// test hat so einen standartkonstruktor


public void einlesen() {
 try{
  BufferedReader inPut = new BufferedReader (new InputStreamReader (System.in) );
  information = inPut.readLine();
 } catch(IOException e) {
   e.printStackTrace();
}

public String getInformation(){

    return information;
}

}
}

wenn ich das jetzt richtig verstanden habe hast du nun noch eine zweite klasse oder?

Code:
public class temp{

private String info;

public temp(Test tst ){

info = tst.getInformation();

}

}

oder wie meinteste das oO

mfg
Opinion
 
Zurück