繁体   English   中英

在Java中使用charAt

[英]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()抛出NoSuchElementExceptionIllegalStateException ,而不是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具有专门用于charprintln方法,因此您可以调用:

System.out.println(c);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM