在java中使用charAt

时间:2012-10-16 15:48:06

标签: java compiler-errors

这是我的任务:

  

编写用户输入字符串的程序,程序将其回显给监视器,每行一个字符:

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) {

        }
    }
}

3 个答案:

答案 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(),其中包含NoSuchElementExceptionIllegalStateException,而不是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 printlnSystem.out专门针对println设置了char方法,因此您只需致电:

System.out.println(c);