ドイツ語のポストコードを入力フォームで検証しようとしています。 しかし、どういうわけか私は15行目で立ち往生し、私の機能は無限ループで「入力してください」という印字だけです。ユーザー入力の検証中にエンドレスループが発生する
私は、sc_plz.nextLine()がブロック機能になると思っていましたが、何とかそうではありません。
import View.AddressView;
import java.io.IOException;
import java.util.Scanner;
public class AddressController {
AddressView view = new AddressView();
public Address addAddress()throws IOException{
//other input questions
Scanner sc_plz = new Scanner(System.in);
int code = 0;
while (!validatePostcode(code))
view.askPostcode(); //simple System.out.println("Input something")
String postcode = sc_plz.nextLine();
try {
code = Integer.parseInt(postcode);
}
catch (NumberFormatException e){
view.invalidData(); //warning about not got a number
}
//other input questions
}
private boolean validatePostcode(int plz) throws IOException {
//legal postcodenumbers are between 01000 -99999
if (1000 <= plz && plz <= 99999){
return true;
}
else {
return false;
}
}
}
「入力してください」はどこに印刷されていますか?これは 'view.askPostcode();'によって行われますか? – pathfinderelite