[英]Using charAt in java
这是我的任务:
在用户输入字符串的地方编写一个程序,该程序以每行一个字符的形式将其回显到监视器:
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) {
}
}
}
在循环中,应该循环遍历从Scanner.nextLine
获得的String
的长度,而不是扫描器本身。
for(int i=0; i<inputString.length(); i++){
如果希望在同一行上的每个字符都回显输入,请使用System.out.print
而不是println
。
两个问题:
将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
。
确保添加相关的导入语句。
您需要导入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);
}
}
如果无法访问System.in
则在用System.in
生成的Scanner
上调用nextLine
只会引发异常,甚至不会成为IOException
,因此不必担心。
最后的观察,您不需要在println
执行"" + c
。 System.out
具有专门用于char
的println
方法,因此您可以调用:
System.out.println(c);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.