在我个人学习Java的过程中,我遇到了另一个障碍。
到目前为止,我有2个阵列,第一个是带有摄影胶片制造商列表的一维阵列,第二个是具有以下外观的二维阵列:
Film Developer Dilusion 35mm 120 Sheet Temperature
Kodak T-Max 100, Ilfosol S, 1+9, 10, 10, , 20C
Kodak T-Max 100, Rodinal RO9, 1+25, 9, 9, , 20C
Kodak T-Max 100, Rodinal RO9, 1+50, 13, 13, , 20C
(嗯,不要用上面的时间来开发这些电影,我只是为这个例子输入了任何数据)
在我的JFrame上,我有一个JComboBoxes列表(电影,开发者,稀释,电影格式)。电影盒由1D阵列填充,我有以下代码,试图在选择电影时列出可能的开发人员。目前这个代码导致无限循环需要我的笔记本电脑硬重置,所以肯定是不对的。
private void filmComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
developerComboBox.removeAllItems();
int count = 0;
while (count <= rows) {
if (myArray[0][count] == filmComboBox.getSelectedItem()) {
developerComboBox.addItem(myArray[1][count]);
count++;
}
}
}
我对这段代码出错的任何建议都非常感激,一旦完成这部分,我将重复使用不同字符串名称的代码等...在选择开发人员时填充稀释字段,然后电影格式字段
干杯 吉姆
答案 0 :(得分:1)
while (count <= rows) {//Loop until count less than or equal to rows
if (myArray[0][count] == filmComboBox.getSelectedItem()) {
//If it Never Satisfied Count won't be incremented
developerComboBox.addItem(myArray[1][count]);
count++;//Never Incremented
}
}
你计算的变量没有递增,你的循环变为inf count++
在if块之外,并使用.equals
方法比较Java中的Strings
。
答案 1 :(得分:0)
将count++
放在if块之外!如果if块不为true,count变量将不会递增,并且您将一遍又一遍地重新测试相同的false boolean语句。也不要使用==
来比较字符串。请改用equals(...)
或equalsIgnoreCase(...)
方法。理解==
检查两个对象是否相同而不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同的字符相同的顺序,这是重要的。而不是
if (fu == "bar") {
// do something
}
做,
if ("bar".equals(fu)) {
// do something
}
,或者
if ("bar".equalsIgnoreCase(fu)) {
// do something
}