繁体   English   中英

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

[英]Java Error; array required, but java.lang.String found

我目前正在尝试完成该程序,但遇到此错误。 我已经做了很多事情试图对其进行修复,以便可以对其进行编译,但无法正常工作。 似乎“字符串字母”出现错误。 有人可以帮我解决这个问题吗?

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]);
    }
  }
}

您的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

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

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

暂无
暂无

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

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