我是编码的新手,我正在做一个类项目,我想要编写一个从文件中读取的主类,然后用它做几个东西。
我无法让我的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();
}
}
此处是运行此代码时的错误消息
appl.java:63: error: cannot find symbol
return candi[0].getName() + " " + candi[1].getName();
^
symbol: variable candi
location: class appl
appl.java:63: error: cannot find symbol
return candi[0].getName() + " " + candi[1].getName();
^
symbol: variable candi
location: class appl
2 errors
我能解决以前的问题,但现在发生了一些有趣的事情。
public static String listall()
{ System.out.println(candi[0].getMotto());
return candi[0].getName();
}
当我运行此代码时,输出将显示System.out命令,但它不会给我返回命令,有人知道为什么会这样吗?
答案 0 :(得分:0)
外部方法无法访问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();
}
}
或使用方法:
import 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方法返回一个字符串,因此其返回类型应为字符串而不是Candidate