为什么这个java toCharArray语句有时只能工作?

时间:2011-09-14 12:42:03

标签: java

我遇到以下代码问题。具体来说,3 toCharArray语句。当我第一次运行代码时,它工作正常,但再次运行它,我收到所有3行的以下错误消息

  

']'预计为   非法开始表达
  不是声明

我意识到我可以通过将它们更改为char []并将[0]调用放在print语句中来打印首字母,但我很好奇为什么代码只能工作一半时间。

谢谢!

import java.util.Scanner;

public class Initials {
    public static void main(String[] args) {

        Scanner names = new Scanner(System.in);

        System.out.print("What is your first name? ");
        String first = names.nextLine();

        System.out.print("What is your middle name? ");
        String middle = names.nextLine();

        System.out.print("What is your last name? ");
        String last = names.nextLine();

        System.out.format("Your name is %s %s %s %n",first,middle,last);

        char[0] Finitial = first.toCharArray();
        char[0] Minitial = middle.toCharArray();
        char[0] Linitial = last.toCharArray();

        System.out.format("Your initials are %c %c %c",Finitial,Minitial,Linitial);
    }
}

2 个答案:

答案 0 :(得分:4)

char[0]不是Finitial变量的有效类型。您获得char[0]之类的唯一时间是:

char[] x = new char[0];

相反,你应该使用:

char firstInitial = first.toCharArray()[0];
// etc

或者分两个阶段:

char[] firstArray = first.toCharArray();
char firstInitial = firstArray[0];

答案 1 :(得分:2)

这是非法语法:

char[0] Finitial = first.toCharArray();
char[0] Minitial = middle.toCharArray();
char[0] Linitial = last.toCharArray();

你想要他的代替:

char Finitial = first.toCharArray()[0];
char Minitial = middle.toCharArray()[0];
char Linitial = last.toCharArray()[0];

BTW:Java命名约定要求您使用小写字母开始本地变量名称。像这样使用驼峰案例:

char firstInitial = first.toCharArray()[0];
char middleInitial = middle.toCharArray()[0];
char lastInitial = last.toCharArray()[0];