파일에서 문자열을 읽은 다음 1-9 또는 A-Z 또는 a-z가 아닌 것을 제거하려고하는 프로그램을 작성 중입니다. A-Z 값은 소문자 여야합니다. 모든 것이 잘 돌아가는 것처럼 보이지만 오류가 없지만 출력이 엉망입니다. 아무 이유없이 특정 문자를 건너 뛰는 것 같습니다. 나는 그것을 보았고 그것을 비틀었다. 그러나 아무것도 작동하지 않는다. if 문이 올바른 것으로 믿기 때문에 특정 문자를 무작위로 건너 뛰는 이유를 알 수 없습니다. 여기에 코드입니다 :문자열이 제대로 채워지지 않습니다.
String dataIn;
int temp;
String newstring= "";
BufferedReader file = new BufferedReader(new FileReader("palDataIn.txt"));
while((dataIn=file.readLine())!=null)
{
newstring="";
for(int i=0;i<dataIn.length();i++)
{
temp=(int)dataIn.charAt(i);
if(temp>46&&temp<58)
{
newstring=newstring+dataIn.charAt(i);
}
if(temp>96&&temp<123)
{
newstring=newstring+dataIn.charAt(i);
}
if(temp>64&&temp<91)
{
newstring=newstring+Character.toLowerCase(dataIn.charAt(i));
}
i++;
}
System.out.println(newstring);
}
그래서
당신에게 예를 위해, 내가 읽어 첫 번째 문자열은 다음과 같습니다
asmlietis
:
이
A sample line this is.
내 프로그램 후 출력이이입니다 통해 실행
그래서 소문자로 A를 읽고, 생각하는 것처럼 건너 뛰고, s를 읽습니다. 그런 다음 어떤 이유로 "a"와 "m"을 건너 뛰고 "p"로갑니다.
나는 그것을했지만 지금은 내 결과가 'asmlietis'이므로 문자를 건너 뛰고있다. – Student
@Student - 아직 마지막 'i ++'을 삭제하지 않았습니다. –
감사합니다. 왜 내가 for 문 내부에서 값을 늘리고 싶었는지 모르겠다. – Student