2016-10-02 2 views
-4

콘솔에서 5 개의 숫자를 읽고 싶습니다. 입력 문자열을 각 숫자에 대해 int [x]로 변환하려면 for 루프를 사용하려고했습니다. 그러나 # 1 증분은 죽은 코드이고 # 2는 내 배열이 초기화되지 않은 것으로 밝혀졌습니다. 저는 처음으로 Java 실습을하고 있으며 조언을 듣게되어 기쁩니다.입력 문자열을 int 배열로 변환

내 코드 :

public static void main(String[] args) throws IOException { 

    System.out.println("Type in five Numbers"); 

    int [] array;  
    InputStreamReader isr = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader(isr); 

    for(int x=0; x<5; x++){ 

    String eingabe = br.readLine(); 

    array[x] = Integer.parseInt(eingabe); 
    break; 
    } 

    reserve(array); } 
+3

첫 번째 반복에서 왜 '중단'합니까? – Li357

+1

1) 예, 배열이 초기화되지 않았습니다. 배열에 아직 크기가 없으므로'array [x]'가 어떻게 작동할까요? 2) 루프에 break 문이 있기 때문에 한 번만 실행됩니다. –

+0

답장을 보내 주셔서 감사합니다. – obszoenling

답변

1

첫째로, 당신은 당신의 배열을 초기화하지 않았다가, 당신은 단지 선언 된 배열 변수 (이름 배열)가 포함되어 있습니다. 나중에 진행하기 전에 Java의 기본 개념을 읽고 연습하는 것이 좋습니다. 그렇지 않으면 나중에 혼동을 일으킬 수 있기 때문입니다. 선언, 초기화 및 할당에 대한 자세한 내용은 here을 참조하십시오.

Andrew가 지적했듯이 루프의 첫 번째 반복에서 키워드 break을 사용했다는 또 다른 문제가 있습니다. 이 키워드는 코드 블록을 종료하므로 루프는 한 번만 실행 된 다음 정상적으로 종료됩니다.


이 코드는 스캐너로 크게 단순화 할 수 있습니다. 스캐너는 지정된 위치에서 입력을 읽습니다. 스캐너의 생성자는 컴퓨터 (키보드)의 기본 입력 장치 인 경우 System.in 또는 컴퓨터의 파일과 같은 File 개체의 두 입력을 허용합니다.

기본적으로 스캐너의 줄무늬는 공백으로 설정됩니다. delimeter는 연속적인 토큰 사이의 경계를 지정하므로 예를 들어 2 3 5 5을 입력 한 다음 루프를 실행하고 scanVarName.nextInt() 메서드를 호출하면 공백을 무시하고 해당 단일 행의 각 정수를 자체 토큰으로 처리합니다.

그래서 올바르게 이해한다면 사용자로부터 입력을 읽고 (아마도 정수를 입력 할 것입니다) 이들을 정수 배열에 저장하고 싶습니까? 사용자가 입력 할 정수의 수를 알고있는 경우 다음 코드를 사용하면됩니다. 먼저 그들이 입력 할 계획 얼마나 많은 정수 당신에게 메시지를 표시 할 수 있습니다

// this declares the array 
int[] array;  

// declares and initializes a Scanner object 
Scanner scan = new Scanner(System.in); 

System.out.print("Number of integers: "); 

int numIntegers = scan.nextInt(); 

// this initializes the array 
array = new int[numIntegers]; 

System.out.print("Enter the " + numIntegers + " integers: "); 

for(int i = 0; i < numIntegers; i ++) 
{ 
    // assigns values to array's elements 
    array[i] = scan.nextInt(); 
} 

// closes the scanner 
scan.close();  

그런 다음 확인을 위해 배열의 항목을 실행하고 그들을 밖으로 인쇄 할를위한 각 루프를 사용할 수 위의 코드 의도 한대로 작동합니다.

+0

도움이되는 답변 주셔서 감사합니다. 방금 코드를 사용했고 효과가있었습니다. – obszoenling

관련 문제