사용자로부터 의견을 받아야합니다. 그들은 새로운 꽃을 창조하게됩니다. 사용자는 꽃의 이름 (String), 꽃의 색 (String), 꽃의 가시 수 (int) 및 꽃의 냄새 (String)를 알려줍니다. 나는 이것을 얻기 위해 하나의 스캐너라는 이름의 입력을 사용했다. 그러나 제대로 작동하지 않습니다. 가시가 많아지면 프로그램은 사용자에게 꽃 냄새가 어떤지 묻습니다. 그러나 대답을 입력 할 수 없습니다. 그러나 가시의 수를 얻기 위해 input2라는 두 번째 스캐너를 만들었으므로 제대로 작동합니다.Java에서 다른 유형의 입력에 대해 다른 Scanner 인스턴스를 사용해야합니까?
import java.util.Scanner;
import java.util.ArrayList;
public class AssignmentTwo {
static ArrayList<FlowerClass> flowerPack = new ArrayList<FlowerClass>();
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while(true){
System.out.println("1. Add flower to flowerpack.");
System.out.println("2. Remove flower from the flowerpack.");
System.out.println("3. Search for a flower in the flowerpack.");
System.out.println("4. Display the flowers in the flowerpack.");
int userChoice = input.nextInt();
switch(userChoice){
case 1:
addFlower();
break;
case 2:
//removeFlower();
break;
case 3:
//searchFlower();
break;
case 4:
displayFlowers();
break;
case 5:
System.out.println("Goodbye!");
System.exit(0);
}
}
}
public static void addFlower(){
Scanner input = new Scanner(System.in);
System.out.println("What is the flower's name?");
String desiredName = input.nextLine();
System.out.println("What is the flower's color?");
String desiredColor = input.nextLine();
System.out.println("How many thorns does it have?");
Scanner input2 = new Scanner(System.in);
int desiredThorns = input2.nextInt();
System.out.println("What does it smell like?");
String desiredSmell = input.nextLine();
flowerPack.add(new FlowerClass(desiredName, desiredColor, desiredThorns, desiredSmell));
}
public static void displayFlowers(){
for (FlowerClass flower: flowerPack){
System.out.println(flower.getName());
}
System.out.println("Number of flowers in pack: " + FlowerClass.numberFlowers());
}
}
내 addFlower()를 보면 당신은 내가 스캐너 입력 2를 만들 부분을 확인하고 새로운 꽃이 가시의 수의 INT를 얻기 위해 입력 2 사용할 것이다 기능 : 여기에 코드입니다. 이전에는 함수의 첫 번째 Scanner 인스턴스를 사용하여 가시의 개수에 대한 입력을 얻었습니다. 그러나 제대로 작동하지 않습니다. 이전 기능은 다음과 같습니다.
public static void addFlower(){
Scanner input = new Scanner(System.in);
System.out.println("What is the flower's name?");
String desiredName = input.nextLine();
System.out.println("What is the flower's color?");
String desiredColor = input.nextLine();
System.out.println("How many thorns does it have?");
int desiredThorns = input.nextInt();
System.out.println("What does it smell like?");
String desiredSmell = input.nextLine();
flowerPack.add(new FlowerClass(desiredName, desiredColor, desiredThorns, desiredSmell));
}
첫 번째 버전의 기능이 작동하지 않는 이유가 있습니까? 새 스캐너를 사용하여 문제를 해결했지만 첫 번째 버전이 작동하지 않는 이유를 알지 못합니다. 여러 종류의 입력에 대해 단일 스캐너를 사용하려고하면 스캐너가 혼란 스럽습니까? Java 튜토리얼 문서에서 Scanning 자습서를보고 있는데 대답이 표시되지 않습니다. 시간 내 줘서 고마워!
감사합니다. 그래서 다른 종류의 입력을 원할 때 새로운 스캐너를 사용하는 것이 가장 좋을까요? – HandleThatError
@HandleThatError 새 스캐너가 필요하지 않습니다. 개행을 사용하는 스캐너의 다음 명령과 그렇지 않은 다음 명령의 차이점을 인식하면됩니다. – azurefrog
+ 1azurefrog. 맞아. 내 경험에 비추어 볼 때, 스캐너는 엉덩이에 통증이 생기지 만 일단 경험이 있으면 그 특이성이 더 낫습니다. – SWPhantom