首先,我想澄清一下。以下是大学的家庭作业,因此我不能根据大学关于抄袭的规则发布实际代码。但这里有一个修改过的代码,可以解释我的问题
代码:
import java.util.*;
public class Foo
{
//creating an object array
private static Object[] objectArray;
//main method
public static void main(String []args)
{
Scanner kb = new Scanner(System.in);
System.out.println("Would you like to initialize array (y/n)?");
if(kb.nextChar() == 'y')
{
initializeArray();
}
someMethod();
}
public static void someMethod()
{
//checking if the array is empty, if the case, quit the method
if(isEmpty());
{
System.out.println("Empty array");
return;
}
//if the above check returns false (array is not empty) continues on
//with the code which is tagged by eclipse as unreachable
}
public static boolean isEmpty()
{
for(Object a : objectArray)
{
if(a != null)
{
return false;
}
}
return true;
}
public static void initializeArray()
{
objectArray[0] = new Object();
}
}
现在我的问题:
由于unreachable code
,上面的代码给出了错误。我一遍又一遍地检查,我知道获得unreachable code
的唯一方法是isEmpty
总是返回false
。不是这种情况。这是日食中可能存在的错误吗?如果这是我的错误,你能否详细解释我出错的地方。
答案 0 :(得分:0)
您的代码存在一些问题。问题是
更改
if(isEmpty());
到
if(new Foo().isEmpty())
由于isEmpty()
是非静态方法,因此无法从静态方法引用并删除该额外分号。
课程未关闭(表示课程结束时缺少}
。)
您在哪里找到这种nextChar()
方法?
检查Scanner课程。
如果您想从Scanner.next
获取第一个字符,那么
而不是
kb.nextChar() == 'y'
使用
kb.next().charAt(0) == 'y'