Java错误;数组必需,但找到了java.lang.String

时间:2015-03-24 04:14:28

标签: java arrays compiler-errors

我目前正在尝试完成此计划,但我遇到此错误的问题。我已经做了很多尝试修复它的东西,所以我可以编译它,但它不会起作用。似乎"字符串字母"得到错误。有人可以帮我解决这个问题吗?

import java.util.Scanner;
public class Period
{
  private static String phrase;
  private static String alphabet;
  public static void main(String [] args)
  {
    Scanner keyboard = new Scanner(System.in);
    String userInput;
    int[] letter = new int [27];
    int number = keyboard.nextInt();
    System.out.println("Enter a sentence with a period at the end.");
    userInput = keyboard.nextLine();
    userInput.toLowerCase();
  }

  public void Sorter(String newPhrase)
  {
    phrase=newPhrase.substring(0,newPhrase.indexOf("."));
  }

  private int charToInt(char currentLetter)
  {
    int converted=(int)currentLetter-(int)'a';
    return converted;
  }

  private void writeToArray()
  {
    char next;
    for (int i=0;i<phrase.length();i++)
    {
      next=(char)phrase.charAt(i);
      sort(next);
    }
  }

  private String cutPhrase()
  {
    phrase=phrase.substring(0,phrase.indexOf("."));
    return phrase;
  }

  private void sort(char toArray)
  {
    int placement=charToInt(toArray);
    if (placement<0)
    {
      alphabet[26]=1;
    }
    else
    {
      // here is one spot that mainly the error pops up?
      alphabet[placement]=alphabet[placement]+1;
    }
  }

  public void entryPoint()
  {
    writeToArray();
    displaySorted();
  }

  private void displaySorted()
  {
    for (int q=0; q<26;q++)
    {
      System.out.println("Number of " + (char)('a'+q) +"'s: "+alphabet[q]);
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您的sort方法将alphabetString)视为数组。 String不是char[],但您可以像String.toCharArray()一样呼叫

private void sort(char toArray)
{
    char[] alpha = alphabet.toLowerCase().toCharArray();
    int placement=charToInt(toArray);
    if (placement<0)
    {
      alpha[26]=1;
    }
    else
    {
      alpha[placement]=alpha[placement]+1;
    }
    alphabet = new String(alpha, "UTF-8");
}

但是修改String是不可能的,因为它们是不可变的。出于同样的原因,您的原始通话alphabet.toLowerCase()不会修改其他方法中的alphabet

答案 1 :(得分:0)

变量alphabet被定义为String数据类型,但如果要使用您在其中使用的括号表示法[]来引用它,则需要将其定义为数组码。在这种情况下,错误消息非常清楚。

String[] example = new String[3];
example[0] = "Hello";
example[1] = "ETC...";