有人可以建议我在这段代码中做什么来打印字符串的第一个字符吗?
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));
}
}
}
答案 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();
,那么你可以获得任何类型的输入作为字符串。之后,您必须将其转换为您需要的数据类型。并确保输入不是空字符串。