2012-03-03 4 views
0

저는 Java에 익숙하지 않았기 때문에 Java에서 몇 가지 기본 사항에 대한 도움이 필요합니다. 두 가지 질문이 있습니다. 그들은 매우 간단 할 수 있습니다 (적어도 C++에서는 그렇습니다). 그러나 Java로 어떻게 수행하는지 알 수는 없었습니다.Inputstream java

(i) 쉼표로 구분 된 값으로 줄을 어떻게 분리 된 문자열로 나누는가? 같은 내가 입력 (텍스트)이 있다고 가정

파일 : 나는 각 라인에 대한 쉼표 사이의 문자열을 파일에서 라인으로 입력 라인을 읽고 싶어

zoo,name,cszoo,address,miami 

    ...,...,...,.... 

(II)를 호출 하위 클래스 생성자

내가 Animal이라는 슈퍼 클래스와 Dog 및 Cat이라는 하위 클래스가있는 경우. 저는 그것들을 입력으로부터 읽는 동안 동물로 Vector에 넣었습니다. 하지만 나는 그들의 생성자를 Dog 나 Cat처럼 호출해야합니다. Java에서 어떻게 수행합니까?

+0

당신이 시도하고 무엇을 작동하지 않습니다에 대해 무엇을? 지금까지 시도한 코드를 보여줍니다. –

+0

내가 실제로 입력 스트림과 아무 것도 할 수 없다 – user1133409

+0

숙제로 이것을 태그하는 것을 잊지 마세요. – Kevin

답변

1
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
// or, to read from a file, do: 
// BufferedReader br = new BufferedReader(new FileReader("file.txt")); 
String line; 
while ((line = br.readLine()) != null) { 
    String[] a = line.split(","); 

    // do whatever you want here 
    // assuming the first element in your array is the class name, you can do this: 
    Animal animal = Class.forName(a[0]).newInstance(); 

    // the problem is that that calls the zero arg constructor. But I'll 
    // leave it up to you to figure out how to find the two arg matching 
    // constructor and call that instead (hint: Class.getConstructor(Class[] argTypes)) 
} 
+0

어떻게 캐치를 구현하고 부분을 시도해야합니까? 또한 여기서 이해할 수없는 것은 (동물원, 12, 라라) .zoo입니다. 내 클래스 이름, lala 및 12 특성입니다. 여기에 원하는대로 무엇이든 정의 할 것입니다. – user1133409

+0

시도/모든 것을 붙잡아 두십시오. 당신이 볼 수있는 유일한 예외는 파일을 찾을 수 없다는 것입니다. 그리고 어쨌든 그것에 대해 할 수있는 일이별로 없습니다. – Kevin

+0

리플렉션을 사용하여 개체를 인스턴스화 할 수 있습니다. 그리고 입력 인자와 일치하는 오버로드를 제공하기 위해 생성자에 의존하십시오. – Kevin

0

FileReader와 함께 BufferedReader를 사용하여 파일을 읽습니다.

BufferedReader reader = new BufferedReader(new FileReader("yourfile.txt")); 

for (String line = reader.readLine(); line != null; line = reader.readLine()) 
{ 
    // handle your line here: 
    // split the line on comma, the split method returns an array of strings 
    String[] parts = line.split(","); 
} 

기본적으로 버퍼링 된 리더는 기본 리더를 둘러보기 위해 사용됩니다. 버퍼링 된 판독기는 사물의 속도를 높이는 버퍼를 사용합니다. 버퍼링 된 리더는 실제로 파일을 읽지 않습니다. 그것을 읽는 기본 FileReader이지만 버퍼링 된 판독기는이를 "배후에서"수행합니다.

또 다른

, 더 자주 볼 수 코드 조각이이지만, 이해하기가 더 어려울 수 있습니다

String line = null; 
while ((line = reader.readLine()) != null) 
{ 

} 
+0

어떻게 catch 및 구현 부분을 구현해야합니까? 또한 여기에 이해가 안되는 것은 (동물원, 12, lala) .zoo 내 클래스 이름, lala 12 속성입니다. 여기에 원하는 모든 원하는 정의 할 것이다. – user1133409