BufferedReader输入问题,String读取(2)

再次遇到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循环,嘛,这当然是因为第二个问题引起的了,我就不教你了,相信你自己可以想到的