我目前正在尝试完成此计划,但我遇到此错误的问题。我已经做了很多尝试修复它的东西,所以我可以编译它,但它不会起作用。似乎"字符串字母"得到错误。有人可以帮我解决这个问题吗?
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]);
}
}
}
答案 0 :(得分:1)
您的sort
方法将alphabet
(String
)视为数组。 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...";