String [] urls는 문자열을 문자열로 포함합니다 (코드는 각 URL의 inputStream을 읽습니다).첫 번째 인덱스에서 멈추는 try-catch 루프의 경우
for 루프의 종료 조건이 '< urls.length'인 경우에도 첫 번째 인덱스 (인덱스 0) 다음에 String [] URL의 인덱스를 반복 할 수 없습니다.
참고 : String [] urls size가 1 일 때 작동합니다. String [] urls size가 2 인 경우 테스트합니다.이 경우 첫 번째 인덱스 만 있지만 두 번째 인덱스는 반복되지 않습니다. 그리고 나는 단지 <body>
블록들 사이에만 관심이 있습니다 (따라서 if (s.contains("<br>")
)
왜 이런 일이 일어나는가에 대한 아이디어가 있습니까? 편집
public void readData(String[] urls) {
for (int i=0; i<urls.length; i++) {
System.out.println(i); //for a String[] urls of size 2, only 0 gets printed.
//I want both 0 and 1 printed
String str="";
try {
URL url=new URL(urls[i]);
URLConnection conn=url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String s;
while ((s = in.readLine())!=null) {
if (s.contains("<br>")) {
str += s;
}
}
} catch(Exception e) {
e.printStackTrace();
}
System.out.println(str); // for String[] urls of size 2,
//only the inputstream of urls' first index gets printed.
//I want both to be printed
}
}
: 이것은 내가
<html>
<head>
<title>
Title
</title>
</head>
<body>
Name1 Age1 Hometown1<br>
Name2 Age2 Hometown2<br>
Name3 Age3 Hometown3<br>
</body>
</html>
디버거에 던져 당신이 실제로있다. 어쩌면에서 System.out.println (urls.length)만큼이 0>의로, 그것은 반복해야 통과 얼마나 많은 URL을 참조하십시오. – Kevin
왜 루프를 제거하고 하나의 URL로 테스트하지 않는가? 그 후에는 연결을 닫아야합니다. 그리고 끝나면 나머지 URL에 대한 전체 프로세스를 완료하는 방법을 생각하십시오. –
은 스택 트레이스를 공유합니다. – Panther