我正在爲我的一個類的實驗室工作,因此我正在尋找更多的解釋,而不是實際的代碼。Java掃描儀在另一種方法
對於這項任務的一部分,我需要讀取用戶的數字,直到按下control-d。我有一個方法,一個while循環,我通過掃描儀進入方法爲好,這是我的主要方法:
Scanner scan = new Scanner(System.in);
System.out.println("Length:");
int length = 0;
if(scan.hasNextInt()){
length = scan.nextInt();
}
if(length<0 || length>100){
System.out.println("Length is not of the proper size");
scan.close();
return;
}
Double[] a1 = new Double[length];
Double[] a2 = new Double[length];
fillWithZeros(a1);
fillWithZeros(a2);
System.out.println("Enter the numbers to be multiplied:");
a1 = fillWithValues(a1,scan);
a2 = fillWithValues(a2,scan);
double total = calculateTotal(a1,a2);
printVector(a1,"a1");
printVector(a2,"a2");
System.out.println("Total: " + total);
scan.close();
那麼這裏就是我的fillWithValues方法:
public static Double[] fillWithValues(Double[] array, Scanner scan) {
int numberOfElements = 0;
while(scan.hasNextDouble()){
if(numberOfElements<array.length){
array[numberOfElements] = scan.nextDouble();
numberOfElements++;
}else{
return array;
}
}
return array;
}
的問題,我我有,當我按下Control-D它不會像它應該結束輸入流,但我有上面的代碼在主要它會結束輸入流,所以有人可以解釋爲什麼我有這個問題?
我只是將掃描儀聲明爲全局變量,但我不允許在此任務中使用全局變量。
如果您在其他代碼變體的主要方法中也有獨立方法中的**精確**代碼,則其行爲應該相同。請發佈兩種變體的完整代碼,工作人員和非工作人員(另請參見[mcve])。 –
我編輯過它顯示我的代碼爲主,然後是不工作的方法。如果我將fillWithValues方法中的代碼放在main中,並將數組名稱更改爲a1或a2而不是數組,則它工作得很好 –
因此,您正在用**替換** two **'fillWithValues()'調用**來自該方法的一個**代碼塊? –