即使在编辑后,nextLine()也无法按预期运行

时间:2016-12-01 16:08:03

标签: java string input java.util.scanner

以下是我要解决的问题:

任务 给定一个长度为N且从0到N-1索引的字符串S,将其偶数索引和奇数索引字符作为空格分隔的字符串打印在一行上。

输入格式

第一行包含一个整数T(测试用例数)。 T后续行的每一行i包含一个字符串S。

示例输入

2
黑客
排名

示例输出

Hce akr
Rn ak

我的代码问题是第一行(Hce akr)正在打印,但下一行不是。我读了一些类似的问题,并在循环开始之前放入了一个nextLine()(输入字符串)但是只显示了第二个输出(Rn ak)。我不明白我哪里出错了。

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int T=sc.nextInt();
    if((T>=1)&&(T<=10))
        {
        String s[]=new String[T];
        int i;
        for(i=0;i<T;i++)
          {
           s[i]=sc.nextLine();                
        }
        int flag=0;
        for(i=1;i<T;i++)
            {
            for(int j=0;j<s[i].length();j=j+2)
                {
                System.out.print(s[i].charAt(j));
                if((j+2)>(s[i].length()-1))
                {
                    System.out.print(" ");
                    j=-1;
                    flag++;
                }
                if(flag==2)
                    break;
            }
                System.out.println();

           }
    }



}

2 个答案:

答案 0 :(得分:0)

这是因为你的

for(i=1;i<T;i++)

开始
for(i=0;i<T;i++)

答案 1 :(得分:0)

由于您的程序逻辑,它只能读取您指定为输入的行数。因为你在开头指定2作为输入,这就是为什么它只要求你再输入一行。因此它甚至没有将Rank作为输入,这就是为什么你没有看到它。如果你将你的第一个输入改为3,你将能够进入并看到另外两行。