如何在JAVA中使用s.nextLine()输入字符串后打印第一个字符?

时间:2015-08-27 15:59:38

标签: java

有人可以建议我在这段代码中做什么来打印字符串的第一个字符吗?

import java.util.*;

class SortingMachine
    {
    public static void main(String args[])
        {
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        for(int i=1;i<=N;i++)
            {
            String s;
            s=sc.nextLine();
            s=s.replaceAll("\\s","");
            s=s.toLowerCase();
            System.out.println(s.charAt(0));
            }
        }
    }

3 个答案:

答案 0 :(得分:1)

使用sc.next()代替sc.nextLine()。 使用后也关闭Scanner

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    for (int i = 1; i <= N; i++) {
        String s;
        s = sc.next();   // -----------------------> change here!!!!
        s = s.replaceAll("\\s", "");
        s = s.toLowerCase();
        System.out.println(s.charAt(0));
    }
    sc.close();   // close the Scanner!!!
}

输出:

2
AAAAAA
a
BBBBBB
b

答案 1 :(得分:0)

我猜你得到了一个StringOutOfBoundsException,因为sc.nextLine()不会等待任何输入,它只会使扫描器超过当前行并返回跳过的输入。麻烦的是,没有更多的输入,所以它得到一个空字符串。你尝试打印空字符串中的第一个字符,然后繁荣!

要修复,扫描仪实际上需要等待用户输入内容。见Jordi Castilla的回答。

答案 2 :(得分:0)

如果您期待整数,

public class Tests {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    String s = String.valueOf(N);
    char[] arr  = s.toCharArray();
    System.out.print("First Characater: "+arr[0]);
    sc.close();   // close the Scanner!!!
  }
}

在这种情况下,你必须考虑两个边缘情况,

1)您期望的输入类型。如果是整数,则使用int N = sc.nextInt();

2)如果您期望Integer,那么它必须小于Integer MAX值。

但是如果使用String input = sc.nextLine();,那么你可以获得任何类型的输入作为字符串。之后,您必须将其转换为您需要的数据类型。并确保输入不是空字符串。