我正在尝试检查数组中是否已使用名称,但它仅适用于现货[0]。 我假设它从boolean中的for循环中只能通过一次,而不会递增以检查其他点?
试图更改不同的if和while循环
if (depotCount < 4){ // Runs if the depots are less than 4
System.out.println("Enter your depots name");
name = console.next().toLowerCase();
if (check(depots, name) == true){
System.out.println("Depot name already exists");
break;
}
else {
addDepot(depots, name);
}
} else {
System.out.println("Only 4 depots are allowed");
break;
}
public boolean check(Depot [] depots, String name){
boolean check = false;
for (int i = 0; i < depots.length; i++){
if(depots[i].getDepotName().equals(name))
return true;
else {
return false;
}
}
return check;
}
因此,如果名字叫“ Warehouse”是可行的,而我尝试第二次输入“ Warehouse”。 但是,如果我尝试输入与第二个插槽相同的名称,它就不会恢复为真。
答案 0 :(得分:7)
您需要在for循环中删除return false;
(如果放在其中),则for循环仅在索引0处运行一次。
public boolean check(Depot [] depots, String name){
boolean check = false;
for (int i = 0; i < depots.length; i++){
if(depots[i].getDepotName().equals(name))
return true;
}
return check;
}
您只能像这样不带校验变量地做短。
public boolean check(Depot [] depots, String name){
for (int i = 0; i < depots.length; i++){
if(depots[i].getDepotName().equals(name))
return true;
}
return false;
}
答案 1 :(得分:2)
问题是您总是在循环的第一次迭代中返回。
尝试如下修改您的代码:
public boolean check(Depot [] depots, String name){
for (int i = 0; i < depots.length; i++){
if(depots[i].getDepotName().equals(name))
return true;
}
return false;
}
此外,您无需在if语句中比较true。那就是你可以改变这个:
if (check(depots, name) == true) {
对此:
if (check(depots, name)) {
此外,您可能想签出Java的HashMap。这些方法包括:
对于值,可以是您喜欢的任何值。例如,它可能是包含公司地址的字符串。它可以是一个整数,其中包含该公司的雇员人数。或者,这是最好的选择,它可能是包含有关公司的所有可能细节的类的实例!
或者,如果不需要存储值,则可以始终使用KeySet,但是HashMaps可能对您更有用。
答案 2 :(得分:1)
在for循环中,您有一个“ else return false”。这是什么意思,如果您发现不相等的内容,则会立即返回false。但是,如果您在任何时候返回方法,该方法都将结束,因此不会遍历所有软件仓库
const constraints = {
video: false,
audio: {
echoCancellation: false,
noiseSuppression: false,
autoGainControl: false
}
}
var context = new AudioContext({
latencyHint: 'interactive',
sampleRate: 44100,
});
navigator.mediaDevices.getUserMedia(constraints)
.then((stream) => {
var source = context.createMediaStreamSource(stream);
source.connect(context.destination);
});
答案 3 :(得分:1)
这是因为您拥有return false;
。这样就简单地结束了方法的执行(并执行了for循环),因为已将false值返回给方法调用。
public boolean check(Depot [] depots, String name){
boolean check = false;
for (int i = 0; i < depots.length; i++){
if(depots[i].getDepotName().equals(name))
return true;
}
return check;
}
答案 4 :(得分:0)
我认为您应该删除else {return false; },从您的代码中:
public boolean check(Depot [] depots, String name){
boolean check = false;
for (int i = 0; i < depots.length; i++){
if(depots[i].getDepotName().equals(name))
return true;
}
return check;
}