Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与对象斗争时,程序无法按预期工作(java)_Java_Object Reference - Fatal编程技术网

与对象斗争时,程序无法按预期工作(java)

与对象斗争时,程序无法按预期工作(java),java,object-reference,Java,Object Reference,所以我有一个cyclingmanager游戏,我想按名字显示车手列表,然后我想在用户选择车手时显示他们的能力。该程序编译和运行良好,问题在于我的riders()方法。它只是没有打印出c1,我的第一个riders。提前谢谢 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class CyclingManager2 { public static void main(String

所以我有一个cyclingmanager游戏,我想按名字显示车手列表,然后我想在用户选择车手时显示他们的能力。该程序编译和运行良好,问题在于我的riders()方法。它只是没有打印出c1,我的第一个riders。提前谢谢

import java.util.ArrayList;
import java.util.List;
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: database(); break;
            default: System.out.println("You have to choose either 0 or 1"); break;
            }

        }
    }
public void database() {

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

    while (dbChoice != 0) {

        System.out.println();
        dbChoice = in.nextInt();
        switch(dbChoice) {
            case 0: dbChoice = 0; break;
            case 1: cy.riders(); System.out.println("Press 0 for going back to the menu\nPress 1 for showing the riders");break;
            default: System.out.println("Choose either 0 or 1"); break;
        }

    } 
}

}

class Cyclist {

List<Cyclist> cyclists = new ArrayList<>(); 
private String name;
private int mountain;
private int timeTrial;
private int sprint;
private int age;
Cyclist c1 = null;


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 riders() {
    abilities();
    for (int i = 0; i < cyclists.size(); i++){
          System.out.print(((Cyclist) cyclists).getName());
    }

}



public void abilities() {

    //Pardilla is created

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

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

    cyclists.add(c1); //adds Pardilla to cyclists arraylist*/
    }

}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类自行车管理器2{
公共静态void main(字符串[]args){
//梅尼瓦尔金
菜单m=新菜单();
m、 选择();
}
}
班级菜单{
扫描仪输入=新扫描仪(系统输入);
自行车手cy=新自行车手();
//选择
公共选择{
int-choice=-1;
while(选项!=0){
System.out.println(“选择某物:”);
System.out.println(“-0将退出程序”+”\n-按1将打开数据库菜单”);
choice=in.nextInt();
开关(选择){
案例0:选择=0;中断;
案例1:数据库();中断;
默认值:System.out.println(“您必须选择0或1”);中断;
}
}
}
公共void数据库(){
System.out.println(“欢迎访问数据库\n以下是选项:\n0=返回菜单\n1:Riders”);
int dbChoice=-1;
while(dbChoice!=0){
System.out.println();
dbChoice=in.nextInt();
开关(dbChoice){
案例0:dbChoice=0;中断;
案例1:cy.riders();System.out.println(“按0返回菜单\n按1显示骑手”);中断;
默认值:System.out.println(“选择0或1”);中断;
}
} 
}
}
职业自行车手{
List cyclists=new ArrayList();
私有字符串名称;
私人山;
私人庭审;
私人智力短跑;
私人互联网;
骑自行车的c1=零;
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getName(){
返回名称;
}
公共山(内山){
这座山=山;
}
公共山{
返回山;
}
公共无效setTimeTrial(int timeTrial){
this.timeTrial=timeTrial;
}
public int getTimeTrial(){
返回时间试验;
}
公共打印(int sprint){
this.sprint=sprint;
}
public int getSprint(){
返回短跑;
}
公共无效设置(整数){
这个。年龄=年龄;
}
公共整数getAge(){
回归年龄;
}
公共交通附加费(){
能力();
对于(int i=0;i
我想您需要更多类似于:

public void riders() {
    abilities();
    for (int i = 0; i < cyclists.size(); i++){
          System.out.print(cyclists.get(i).getName());
    }
}
public void riders(){
能力();
对于(int i=0;i

另一件事是,我不确定您是否想要
List cyclists=new ArrayList()
成为骑自行车的人的一部分。

我想你想要更多的东西,比如:

public void riders() {
    abilities();
    for (int i = 0; i < cyclists.size(); i++){
          System.out.print(cyclists.get(i).getName());
    }
}
public void riders(){
能力();
对于(int i=0;i

另一件事是,我不确定您是否想要
List cyclists=new ArrayList()
成为自行车手课程的一部分。

您有以下循环:

for (int i = 0; i < cyclists.size(); i++) {
    System.out.print(((Cyclist) cyclists).getName());
}
或者使用基于索引的检索的for循环:

for (int i = 0; i < cyclists.size(); i++) {
    cyclists.get(i).getName());
}
for(int i=0;i
您有这个for循环:

for (int i = 0; i < cyclists.size(); i++) {
    System.out.print(((Cyclist) cyclists).getName());
}
或者使用基于索引的检索的for循环:

for (int i = 0; i < cyclists.size(); i++) {
    cyclists.get(i).getName());
}
for(int i=0;i
两个问题:

  • 将骑手添加到
    ArrayList
    的部分将被注释掉
  • ArrayList
    上循环的方式绝对不正确。试着这样做:

    for (Cyclist cyclist : cyclists) {
        System.out.println(cyclist.getName());
    }
    
  • 两个问题:

  • 将骑手添加到
    ArrayList
    的部分将被注释掉
  • ArrayList
    上循环的方式绝对不正确。试着这样做:

    for (Cyclist cyclist : cyclists) {
        System.out.println(cyclist.getName());
    }
    

  • 您应该通过调用列表编号从列表中获取对象:
    cyclists.get(i).getName())

    您应该通过调用列表编号从列表中获取对象:
    cyclists.get(i).getName())

    riders()方法应该打印arraylist名称,例如Sergio Pardilla(c1)。riders()方法应该打印arraylist名称,例如Sergio Pardilla(c1),为了避免遇到运行时错误,我将其注释掉。谢谢你的回答,为了不面对运行时错误,我把它注释掉了。谢谢你的回答,最简单的解决方案,因为我更喜欢普通的for循环而不是enhanched版本。非常感谢,这是我用来改进我的程序的答案。最简单的解决方案,因为我更喜欢普通的for循环而不是enhanched版本。非常感谢,这是我用来改进程序的答案。