这是我的任务:
编写用户输入字符串的程序,程序将其回显给监视器,每行一个字符:
C:\>java LinePerChar
Enter a string:
Octopus
O
c
t
o
p
u
s
我试过了,但是我遇到了一些编译错误。这是我的代码:
import java.util.*;
class CharactorEcho{
public static void main(String args []){
Scanner sc = new Scanner(System.in);
System.out.println("Enter a string :");
try {
String inputString = sc.nextLine();
for(int i=0; i < sc.length(); i++) {
char c = inputString.charAt(i);
System.out.println("" + c);
}
} catch(IOException e) {
}
}
}
答案 0 :(得分:7)
在你的循环中,你应该遍历从String
获得的Scanner.nextLine
长度,而不是扫描仪本身。
for(int i=0; i<inputString.length(); i++){
如果您希望输入与相同行中的每个字符一致,请使用System.out.print
代替println
。
答案 1 :(得分:3)
两个问题:
将for(int i=0; i<sc.length(); i++){
更改为for(int i=0; i<inputString.length(); i++){
您需要与扫描仪进行比较,而不是输入字符串。
另外,请尝试抓取
java.util.NoSuchElementException
java.lang.IllegalStateException
取代IOException
,作为您的陈述sc.nextLine()
,其中包含NoSuchElementException
和IllegalStateException
,而不是IOException
。
确保添加相关的import语句。
答案 2 :(得分:3)
您需要导入IOException
。将此行添加到代码顶部,如果您有package
行,则在import java.io.IOException;
行之后添加:
sc
此外,您要求for
获取长度而不是字符串,因此请将for(int i = 0; i < inputString.length(); i++) {
更改为:
IOException
但实际上,你不应该抓住public static void main(String args []){
Scanner sc = new Scanner(System.in);
System.out.println("Enter a string :");
String inputString = sc.nextLine();
for(int i=0; i < sc.length(); i++) {
char c = inputString.charAt(i);
System.out.println("" + c);
}
}
。实际上,您的代码永远不会抛出异常。这就是你所需要的:
nextLine
在使用Scanner
的{{1}}上拨打System.in
只会在System.in
无法访问时抛出异常,甚至不会是{{1}所以不要担心。
最后一个观察结果是,您不需要IOException
"" + c
println
。 System.out
专门针对println
设置了char
方法,因此您只需致电:
System.out.println(c);