실제로 스레드를 통해 대답을 찾으려고했지만 여전히 약간의 피드백을 얻을 수 있기를 바랍니다.메서드의 스캐너 개체 및 NoSuchElementException
아래의 코드는 나쁜 스타일입니다. 그러나 두 가지 방법으로 두 개의 Scanner 개체를 만들었으므로 번호를 입력 한 후 java.util.NoSuchElementException
을 쓴 이유를 모르겠습니다. 새 입력을 시작할 수 있어야합니다. inputAndPrintNumber()에서 input.close()
을 지우면 올바르게 작동하고 컴파일됩니다. 가능하다면 스캐너 스캐너 obj를 사용하고 input.close()
을 지우지 않으면 왜 고쳐야하는지, 어떻게 고칠 수 있는지 정말 알고 싶습니다.
import java.util.*;
public class t{
public static void main(String [] args){
inputAndPrintNumber();
inputAndPrintString();
}
public static void inputAndPrintNumber(){
Scanner input = new Scanner(System.in);
String s = input.nextLine();
System.out.print(s);
input.close();
}
public static void inputAndPrintString(){
Scanner input2 = new Scanner(System.in);
int a = input2.nextInt();
System.out.print(a);
}
}
아래 코드가 더 좋은지 또는 더 좋은 아이디어인지 확실하지 않습니다. 당신이 scanner.close()
를 호출 할 때
import java.util.*;
public class t{
public static Scanner input = new Scanner(System.in);
public static void main(String [] args){
inputAndPrintNumber();
inputAndPrintString();
input.close();
}
public static void inputAndPrintNumber(){
String s = input.nextLine();
System.out.print(s);
}
public static void inputAndPrintString(){
int a = input.nextInt();
System.out.print(a);
}
}
Pshemo에 감사드립니다. 어떤 방법 으로든 스캐너 객체를 보내도록 선택합니다. 입력이 필요합니다. 이 작업을 수행하는 가장 좋은 방법은 궁금합니다. –
스캐너를 어떻게 사용 하느냐에 따라 달라지기 때문에 어느 쪽이 가장 좋은지 알기 어렵습니다. 요점은 더 많은 데이터를 읽으려는 경우 사용자가 데이터를 읽지 않고 닫을 때마다 스캐너를 다시 작성하지 않는 것입니다. main 메소드에서 스캐너를 생성하고 다른 메소드로 넘겨 주길 원한다면 괜찮습니다. 또한 두 번째 접근법을 사용하는 것이 좋지만 액세스 가능성을 'public static Scanner input = new Scanner (System.in);'로 변경하는 것은 여러분이 하나의 스캐너를 작성하고 메소드에서 다시 사용하기 때문입니다. – Pshemo