Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo ich habe eine Klasse Person und eine Klasse PersonenSort. In PersonenSort soll meine main-Methode stehen. Ich möchte ein eindimensionales Person-Array anlegen, wobei die Instanzvariablen, die in der Klasse Person stehen, mit der Tastatur eingelesen werden.
Warum kann ich nicht schreiben:
Vielen Dank, ja logisch, in die eckigen Klammern hat die Anzahl reingehört, die ich vorher von der Tastatur eingeben lasse!
Ich habe später im Code dieses Stück:
Code:
for (int i=0; i<anzahl; i++) {
if (person[i].geschlecht==True) {
geschl[i]="Männlich";
}
Ich habe geschlecht in meiner Klasse Person als Boolean deklariert.
Jetzt wird mir hier in meiner anderen Klasse True rot unterstrichen mit der Fehlermeldung, "True cannot be resolved".
Warum denn?
ups ... stimmt da hab ich wohl was vergessen, danke für die Korrektur!
... und punkto == True ... es muss hier == true heißen ... also klein geschrieben.
Allerdings reicht es auch wenn du einfach if (person.geschlecht){ ... schreibst.
Ich muss blöderweise in meiner Klasse Person, geschlecht als Boolean deklarieren. In meiner Klasse PersonenSort frage ich dann:
"Männlich: " und ich antworte mit true oder false.
Später in meiner Ausgabe soll allerdings männlich oder weiblich ausgegeben werden und das wollte ich mit dieser if-Bedingung lösen.
ich würde dann aber nicht "geschlecht" sondern sowas wie "weiblich" als Attribut nehmen. Die Lösung hast du bereits. Überprüfen mit "true" und nicht mit "True" bzw. bei booleans musst du theoretisch gar nicht überprüfen.
Außerdem solltest du dir Gedanken über Getter- und Setter-Methoden machen.
Ich habe jetzt diesen Code in meinem PersonenSort:
Code:
import static Progxxxols.IOTools.*;
public class PersonenSort {
public static void main (String[] args) {
int anzahl=readInteger("Wieviele Personen willst Du sortieren?");
String [] geschl=new String[anzahl];
Person [] person =new Person[anzahl];
for (int i=0; i<anzahl; i++) {
System.out.println((i+1)+". Person: ");
person[i].name =readString("Nachname: ");
person[i].vorname =readString("Vorname: ");
person[i].alter =readInteger("Alter: ");
person[i].geschlecht =readBoolean("Männlich: ");
}
for (int i=0; i<anzahl; i++) {
if (person[i].geschlecht==true) {
geschl[i]="Männlich";
}
else
{geschl[i]="Weiblich";
}
}
System.out.print(person[0].vorname+" "+person[0].name+", "+person[0].alter+" Jahre, ");
}
}
und in meiner anderen Klasse Person:
Code:
public class Person {
public static int nummer=0;
public String name;
public String vorname;
public int alter;
public boolean geschlecht;
public Person (String na, String v, int a, boolean g){
name=na;
vorname=v;
alter=a;
geschlecht=g;
}
}
Nach der ersten Eingabe eines Namens kommt dieser Fehler:
java.lang.NullPointerException
Warum denn jetzt schon wieder?