即使方法已定义,我也无法得到方法showTotal的未定义方法。
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String command ;
Machine M = null;
while(true)
{
System.out.println("Enter your command");
command = sc.next();
String[] commands = command.split(" ");
if (commands[0] == "create" )
{
M = new Machine (commands[1],commands[2]);
}
else if (commands[0] == "total" )
{
M.showTotal();
}
}
}
}
答案 0 :(得分:0)
您需要为扫描仪调用nextLine()而不是next()。
command = sc.next();
String[] commands = command.split(" ");
您将无法分割字符串命令,因为它不能再有空格,因为您正在使用next()。更改它,这样您就可以抓住整条线
command = sc.nextLine(); //grab the line
String[] commands = command.split(" ");
然后,如果您的语句需要对字符串使用equals()方法,则==不会以您希望的方式比较Java中的字符串。您还需要确保通过split返回的数组的长度> = 3,以防止索引超出范围,并在调用showTotal()时检查M是否为null
if (commands[0].equals("create") && comands.length() >= 3)
{
M = new Machine (commands[1],commands[2]);
}
else if (commands[0].equals("total") && M != null)
{
M.showTotal();
}