【问题标题】:Unable to take full String input from console无法从控制台获取完整的字符串输入
【发布时间】:2015-07-18 13:11:54
【问题描述】:
public class PairsWithSumK 
{
    public static void main(String[] args) {
        // Write your code here
        Scanner sc= new Scanner(System.in);
        int test= sc.nextInt();
        for(int i=0;i<test;i++)
        {
            int num= sc.nextInt();
            int sum= sc.nextInt();
            String a;
            a = sc.next();
            String [] array= a.split(" ");
            int count=0;
            for(int j=0;j<num;j++)
             {
                int x=0;
                x=sum-Integer.parseInt(array[j]);
                String xs =String.valueOf(x);
                if(Arrays.asList(array).contains(xs))
                {
                    int index=Arrays.asList(array).indexOf(xs);
                    array[index]=array[j]="-1";
                    count++;

                }
            }
            System.out.println(count);
        }
    }
}

我一直在尝试在 java 中获取控制台输入,但不是获取整行然后将其转换为字符串数组,而是代码只获取第一个字符。例如:输入-“1 2 3 4 5 6”,字符串“a”将只取1。作为编码新手,我被困在这个。

【问题讨论】:

    标签: java arrays string input console


    【解决方案1】:

    扫描器的 next() 方法只将字符串带到下一个分隔符(默认情况下为空格)。因此,在您的情况下,每次调用 auf sc.next() 都会读入您的一个号码(第一个 1,然后是 2,等等)。

    因此,在您的代码中,您不会将它们作为字符串读入并对其进行拆分,而只需使用 sc.next() 分别填充数组的每个索引。

    (您可以使用 sc.hasNext() 查看是否添加了整个输入)。

    【讨论】:

      【解决方案2】:

      默认情况下,Scanner 我们使用作为分隔符一个或多个空格next() 将尝试读取并返回令牌,直到下一个分隔符。例如,如果您的输入是

      1 2 foo bar
      

      然后这样的代码将返回

      nextInt(); // 1
      nextInt(); // 2
      next();    // foo
      next();    // bar
      

      请注意,第一个next() 没有返回foo bar,而只返回foo,因为它后面有分隔符,所以没有空间可以分割。如果您想阅读其余部分,则需要使用nextLine()

      但请小心使用该方法,因为如果您的输入是 1\nfoo 并且您将调用 nextIntnextLine,您将得到 1""(空字符串)作为结果,因为下一行尝试读取内容直到下一行分隔符,或直到数据结束。因此,如果1\nfoonextInt() 之后,光标将设置在1 之后,例如1|\nfoo,因此在其当前位置和下一行分隔符(\n)之间只是空字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 1970-01-01
        相关资源
        最近更新 更多