Java-программа завершается вместо циклического перебора параметров
Я хочу, чтобы моя программа перебирала опции (1,2,3) снова и снова, чтобы я мог выполнять функции несколько раз. Однако после того, как я ввожу ввод для одной опции, программа просто завершается. Как сделать так, чтобы оно повторялось несколько раз без прерывания?
Это пример ввода и вывода в данный момент:
1 - вход
2 - Посмотри вверх
3 - черный список
3
Введите черный список IPA: 232
(Затем заканчивается)
import java.util.*;
public class Main {
public static void main(String[] args) {
DNS a = new DNS();
String domain;
String ipa;
System.out.printf("1 - Input\n");
System.out.printf("2 - Look up\n");
System.out.printf("3 - Blacklist\n");
Scanner scan = new Scanner(System.in);
while ( scan.hasNextInt() ) {
int option = scan.nextInt();
if(option == 1){
System.out.printf("Enter Domain & IPA: ");
Scanner scan1 = new Scanner(System.in);
String theLine = scan1.nextLine();
String[] split = theLine.split(" ");
domain = split[0];
ipa = split[1];
a.input(domain, ipa);
scan1.close();
} else if (option == 2){
System.out.printf("Enter Domain: ");
Scanner scan2 = new Scanner(System.in);
String theLine = scan2.nextLine();
domain = theLine;
ipa = a.lookup(domain);
if(ipa.equals("null")){
System.out.printf("There is no IPA for %s\n", domain);
} else {
System.out.printf("The IPA for %s is %s\n", domain, ipa);
}
scan2.close();
} else if (option == 3){
System.out.printf("Enter Blacklisted IPA: ");
Scanner scan3 = new Scanner(System.in);
String theLine = scan3.nextLine();
ipa = theLine;
a.blacklist(ipa);
scan3.close();
} else {
System.out.printf("Incorrect command input\n");
}
}
scan.close();
}
}
3 ответа
Не используйте цикл в опциях чтения, используйте switch-case
вместо. Вы не можете использовать цикл для итерации printf
выход:)
Scanner scan = new Scanner(System.in);
int option = scan.nextInt();
switch(option){
case 1:{//input your argument 1 here}break;
case 2:{//input your argument 2 here}break;
case 3:{//input your argument 3 here}break;
}
Не создавайте более одного сканера с System.in, так как если вы закроете сканер, вы рискуете закрыть сам System.in и испортить все функции сканера.
Вместо этого используйте один и только один сканер, созданный с помощью System.in, и делитесь им в своей программе, где это необходимо, и закрывайте его только тогда, когда программа полностью завершена со всем его использованием.
Попробуйте это вместо этого:
import java.util.Scanner;
class Main {
public static void main(String args[]){
Scanner s = new Scanner(System.in);
int option;
while(((option=s.nextInt())<4)&&(option>0))
{
if(option == 1){
System.out.printf("Enter Domain & IPA: ");
Scanner scan1 = new Scanner(System.in);
String theLine = scan1.nextLine();
String[] split = theLine.split(" ");
domain = split[0];
ipa = split[1];
a.input(domain, ipa);
scan1.close();
}
else if(option == 2){
System.out.printf("Enter Domain: ");
Scanner scan2 = new Scanner(System.in);
String theLine = scan2.nextLine();
domain = theLine;
ipa = a.lookup(domain);
if(ipa.equals("null")){
System.out.printf("There is no IPA for %s\n", domain);
} else {
System.out.printf("The IPA for %s is %s\n", domain, ipa);
}
scan2.close();
}
else if(option == 3){
System.out.printf("Enter Blacklisted IPA: ");
Scanner scan3 = new Scanner(System.in);
String theLine = scan3.nextLine();
ipa = theLine;
a.blacklist(ipa);
scan3.close();
}
else
System.out.printf("Incorrect command input\n");
}
}
}