Java 如何命名和获取要在程序上调用的listall()方法?

Java 如何命名和获取要在程序上调用的listall()方法?,java,Java,我对编码是新手,我正在做一个类项目,我想写一个从文件中读取的主类,然后用它做一些事情 我很难让我的listall()方法工作,我不知道如何命名,或者参数(如果有)应该是什么。我试图从键盘上获取一个值,并根据一个值调用某个方法,因为现在我只有listall()方法,我希望用户输入l或l,这将使listall()方法被调用 然而,我从早上开始就一直在尝试,并浏览各种教程,但我不明白我该如何设置它。帮忙?我已经用我的程序进行了很多测试,我可以用它从我创建的“候选类”中获得我想要的某些属性。这是我的主类

我对编码是新手,我正在做一个类项目,我想写一个从文件中读取的主类,然后用它做一些事情

我很难让我的listall()方法工作,我不知道如何命名,或者参数(如果有)应该是什么。我试图从键盘上获取一个值,并根据一个值调用某个方法,因为现在我只有listall()方法,我希望用户输入l或l,这将使listall()方法被调用

然而,我从早上开始就一直在尝试,并浏览各种教程,但我不明白我该如何设置它。帮忙?我已经用我的程序进行了很多测试,我可以用它从我创建的“候选类”中获得我想要的某些属性。这是我的主类代码,我已经注释掉了某些行,用于程序的特定部分。 请帮帮我,我迷路了

import java.io.*;

import java.util.Scanner;

public class appl {

public static void main (String [] args) throws IOException

{ String fileName = "C:/Users/mrodri34/Documents/cipcs115.txt";

File candidates = new File(fileName);

Scanner scan = new Scanner(candidates);
Scanner user = new Scanner(System.in);
String state = scan.next();
int numOfCan = scan.nextInt();
String what = scan.nextLine();
//System.out.println(what);
int count = 1; 
int i;
int o = 1;
Candidate [] candi = new Candidate[3];
for ( i=0; i<numOfCan; i++)
{ 
String three = scan.next();
String four = scan.next();
String five = scan.next();
int six = scan.nextInt();
double seven = scan.nextDouble();
String eight = scan.nextLine();
//String nine = scan.nextLine();
Candidate night  = new Candidate (three,four,five,six,seven,eight);
candi [i] = night ; 
System.out.println(night.getName() + "  " + night.getMotto());
}
System.out.println(candi[0].getName());
System.out.println(candi[1].getName());
//Candidate [] candi = new Candidate[3];
//Candidate night = new Candidate (three,four,five,six,seven,eight);
//candi [0] = night;

//System.out.println(eight);
//System.out.println(six);
//System.out.println(seven);
//System.out.println(five);
System.out.println(state);
//System.out.println(what);
System.out.println(numOfCan);
//System.out.println(three);
//System.out.println(four);
//System.out.println("First candidate is " + candi[0].getName());
//System.out.println(candi[0].getNumberOfVotes());
//System.out.println(night.toString());
//System.out.println(night.getParty());
System.out.println(" what would you like to do? >");
String option = user.next();
switch (option)
{case "l":
case "L":
listall();
break;
}
scan.close();  
}
public static Candidate listall()
{
return candi[0].getName() + "   " + candi[1].getName();
}
}
我能够解决以前的问题,但现在发生了一些有趣的事情

public static String listall()
{  System.out.println(candi[0].getMotto());
return candi[0].getName();
} 

当我运行此代码时,输出将显示System.out命令,但它不会给我返回命令,有人知道原因吗?

外部方法无法访问candi数组,因此需要包含一个字段变量或getCandidates()方法

大概是这样的:

import java.io.*;

import java.util.Scanner;

public class appl {

    private static Candidates[] candi;

    public static void main (String [] args) throws IOException
    { 
        //Initialize array in here
    }

    public static String listall()
    {
        return candi[0].getName() + "   " + candi[1].getName();
    }
}
或使用以下方法:

导入java.io.*

import java.util.Scanner;

public class appl {

    private Candidates[] candi;

    public static void main (String [] args) throws IOException
    { 
        //Initialize array in here
    }
    public Candidate[] getCandidateArray()
    {
        return candi;
    }
    public static String listall()
    {
        Candidate[] temp = getCandidateArray();
        return temp[0].getName() + "   " + temp[1].getName();
    }
}

还请注意,您的listAll方法返回一个字符串,因此其返回类型应为string not Candidate

我知道您是新开发人员。但是,如果您删除了不需要的代码,然后格式化了剩余的代码,这会很有帮助。这将使那些试图帮助我的人变得更容易。感谢您的快速和深思熟虑的响应,我想我已经解决了我最初的问题,但是在编译代码时,我现在收到一个“线程中的异常”main“java.lang.NullPointerException”我不确定这是什么意思,但我知道这与我的switch case语句以及它调用listall()方法的方式有关,我不确定问题是否出在这里,因为如果我没有弄错的话,它应该是某种初始化问题,但我不知道应该初始化为null。
import java.util.Scanner;

public class appl {

    private Candidates[] candi;

    public static void main (String [] args) throws IOException
    { 
        //Initialize array in here
    }
    public Candidate[] getCandidateArray()
    {
        return candi;
    }
    public static String listall()
    {
        Candidate[] temp = getCandidateArray();
        return temp[0].getName() + "   " + temp[1].getName();
    }
}