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