我被我正在创建的一段代码所困扰。我的 IDE 是 Eclipse,当我使用它的调试功能来跟踪每一行发生的事情时,它会完美地输出。但是,当我单击“运行”项目时,它只会输出一个空白屏幕:
public static void compareInterests(Client[] clientDetails)
{
int interests = 0;
for (int p = 0; p < numberOfClients; p++)
{
for (int q = 0; q < numberOfClients; q++)
{
String a = clientDetails[p].getClientInterests();
String b = clientDetails[q].getClientInterests();
int count = 0;
while (count < a.length())
{
if (a.charAt(count) == b.charAt(count))
interests++;
count++;
}
if ((interests >= 3) && (clientDetails[p].getClientName() != clientDetails[q].getClientName()))
System.out.print (clientDetails[p].getClientName() + " is compatible with " + clientDetails[q].getClientName());
interests = 0;
}
}
}
该代码旨在导入一个对象数组,其中包含有关客户姓名和客户兴趣的信息。客户的兴趣以“01010”格式存储,其中每个 1 表示他们对该活动感兴趣,每个 0 表示不感兴趣。
我的代码将每个客户字符串的每个字符与每个其他客户的字符串进行比较,并为所有不具有相同名称且具有三个或更多共同兴趣的客户输出结果。
当我通过 Java 的调试器运行此代码时,它输出正常 - 但是当我单击运行项目或编译时,我只是得到一个空白屏幕。
有任何想法吗?
编辑:我改变了部分
clientDetails[p].getClientName() != clientDetails[q].getClientName()
到
clientDetails[p].getClientName().equals(clientDetails[q].getClientName()
正如以下答案中的人们所建议的那样。但是,我仍然得到空白输出。任何其他想法(还有,为什么 Eclipse 的调试器会忽略这一点并正确输出所有内容?)
示例输入如下所示:
Sophia Candappa F 23 00011
Jade Clarke F 25 00011
忽略性别和年龄(F 和 23/25),因为我在其他部分已经处理过了。
编辑2:
好吧,现在更陌生了!如果我在兴趣 = 0 之后添加此代码,如下所示:
interests = 0;
System.out.println("");
我从中得到输出(可怕的格式化输出,因为我可能会得到一个结果,新行,结果,然后是四个新行,然后是结果,这取决于谁与循环语句中的谁匹配。我真的不明白为什么行给出输出。有人吗??