Java 程序运行时,只获取空值作为返回值

Java 程序运行时,只获取空值作为返回值,java,null,Java,Null,因此,这个程序运行良好,它是一个用于学习目的的自行车管理器。问题是当我试图得到一个骑手能力的列表时:返回值都是空的,即使它们是在我的一个方法中设置的。我做错了什么?向下滚动到公共虚空技能,错误似乎位于该区域。提前谢谢 import java.util.Scanner; public class CyclingManager2 { public static void main(String[] args) { //menyvalgene Menu m = new Menu()

因此,这个程序运行良好,它是一个用于学习目的的自行车管理器。问题是当我试图得到一个骑手能力的列表时:返回值都是空的,即使它们是在我的一个方法中设置的。我做错了什么?向下滚动到公共虚空技能,错误似乎位于该区域。提前谢谢

import java.util.Scanner;

public class CyclingManager2 {
public static void main(String[] args) {

    //menyvalgene
    Menu m = new Menu();
    m.choice();

    }
}

class Menu {
Scanner in = new Scanner(System.in);
Cyclist cy = new Cyclist();

//choices
public void choice() {

    int choice = -1;
    while (choice != 0) {

        System.out.println("Choose something: ");
        System.out.println("-0 will exit the program" + "\n-Pressing 1 will open the database menu");
        choice = in.nextInt();
        switch(choice) {
            case 0: choice = 0; break;
            case 1: cy.database(); break;
            default: System.out.println("You have to choose either 0 or 1"); break;
        }

    }
}
}

class Cyclist {

private String name;
private int mountain;
private int timeTrial;
private int sprint;
private int age;



public void setName(String name) {
    this.name = name;
}

public String getName() {
    return name;
}


public void setMountain(int mountain) {
    this.mountain = mountain;
}

public int getMountain() {
    return mountain;
}


public void setTimeTrial(int timeTrial) {
    this.timeTrial = timeTrial;
}

public int getTimeTrial() {
    return timeTrial;
}

public void setSprint(int sprint) {
    this.sprint = sprint;
}

public int getSprint() {
    return sprint;
}



public void setAge(int age) {
    this.age = age;
}


public int getAge() {
    return age;
}




public void abilities() {

    //Pardilla blir til!
    Cyclist c1 = new Cyclist();

    c1.setName("Sergio Pardilla");
    c1.setMountain(75);
    c1.setTimeTrial(60);
    c1.setSprint(60);
    c1.setAge(30);

    System.out.println(getName() + "s abilities:");
    System.out.println("Mountain - " + getMountain());
    System.out.println("TimeTrial - " + getTimeTrial());
    System.out.println("Sprint - " + getSprint());
    System.out.println("Age - " +getAge());


    }

//databasemenu

public void database() {

    Scanner in = new Scanner(System.in);

    System.out.println("Welcome to the database \nThese are the options:\n0 = Quit\n1: Abilities");
    int dbChoice = -1;

    while (dbChoice != 0) {

        System.out.println();
        dbChoice = in.nextInt();
        switch(dbChoice) {
            case 0: dbChoice = 0; break;
            case 1: abilities(); break;
            default: System.out.println("Choose either 0 or 1"); break;
        }

    } in.close();
}


public void riders() {


    System.out.println("Following riders are available in this database");
}



}
使用

反而

getName()
因为默认情况下对象是
null
,所以在
initialize
之前要获取值。这就是为什么要获取
null


c1持有一个
自行车职业的实例。您设置的值仅更新为c1方法局部变量所持有的实例。您应该使用
Cyclist
对象获取它们的值

System.out.println(c1.getName() + "s abilities:");
System.out.println("Mountain - " + c1.getMountain());
您可以将值设置为
Cyclist
object
c1
,而不是getter


阅读

你应该初始化你自己的对象,而不是c1。谢谢:)你真好
System.out.println(c1.getName() + "s abilities:");
System.out.println("Mountain - " + c1.getMountain());