sinat_38214562
女青年与西西
2017-11-28 09:23

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

  • 调试
  • java
  • string

再次遇到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");
            }
        }

    }


  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答

为你推荐

换一换