如何命名并获取我的程序中要调用的listall()方法?

时间:2014-12-07 22:44:47

标签: 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();
}
}

此处是运行此代码时的错误消息

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命令,但它不会给我返回命令,有人知道为什么会这样吗?

1 个答案:

答案 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