再次遇到BufferedReader读取问题,
比如我将下面的样例一次性赋值粘贴到console:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
通过debug可以看,因为我只有在全部粘贴结束后才按回车,根据bufferedreader读取,会把这些都作为一个,我看到正确读取n后,第一次s读取是“”
此时n = 7,之后再循环s读取第一个PAT,再循环s读取第二个PAAT。
我的疑惑是为什么会这样读,第一次s读取“”,为什么之后还会读取字符串?这是怎么读的?
另外我又一个疑惑,为什么对于循环条件:
if (s.charAt(i) != 'P' || s.charAt(i) != 'A' || s.charAt(i) != 'T' )
对于每一个PAT, PAAT都不成立,都退出for循环?
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class B1003 {
public static void main(String[] args) throws Exception {
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
int n = rd.read() - '0';
int Pindex = 0;
int Aindex = 0;
int Tindex = 0;
while (n > 0)
{
n--;
String s = rd.readLine();
for (int i = 0; i < s.length(); i++)
{
if (s.charAt(i) != 'P' || s.charAt(i) != 'A' || s.charAt(i) != 'T' )
{
System.out.println("NO");
break;
}
if (s.charAt(i) == 'P')
{
Pindex = s.indexOf('P');
}
else if (s.charAt(i) == 'A')
{
Aindex = s.indexOf('A');
}
else
{
Tindex = s.indexOf('T');
}
}
if (s.length() - 1 - Tindex == Pindex * ( Tindex - Pindex - 1))
{
System.out.println("YES");
}
}
}
两个字符相减的话 是按照阿斯卡嘛 表 计算差的。
read()读取单个字符,读完8就没了,readline()读一行,返回的是一行中不包括('\n')('\r')这样的结束符的字符串,想一想,为什么是s第一次读的
是空字符串,至于为什么每次退出for循环,嘛,这当然是因为第二个问题引起的了,我就不教你了,相信你自己可以想到的