2015-03-24 7 views
0

В настоящее время я пытаюсь завершить эту программу, и у меня возникли проблемы с этой ошибкой. Я много сделал, пытаясь исправить это, поэтому я могу скомпилировать его, но это не сработает. Кажется, что «String alphabet» получает ошибку. Может кто-нибудь помочь мне решить это, пожалуйста?Ошибка Java; array требуется, но 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]); 
    } 
    } 
} 
+0

Покажите нам ошибку, которую вы получите – CandiedOrange

+0

Ошибка. Я отметил это в своем коде, где обычно отображается –

ответ

0

Переменная alphabet определяется как тип String данных, но вы должны определить его как массив, если вы хотите сослаться на него с помощью брекет обозначения [] у вас есть в вашем коде. В этом случае сообщение об ошибке довольно ясно.

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

Что вы имеете в виду? Можете ли вы конкретно показать мне мой код? –

+0

Или после индивидуального символа (например, 'getCharAt'), но обрабатывают его как массив ... возможно, возможно ... – MadProgrammer

+0

@AustinJonMagalong Вы определяете переменную алфавита как' новую строку '. Вы должны определить его как массив. Если это объяснение непонятно, пожалуйста, подумайте над массивами и примитивами для поиска в Java, а затем прочитайте немного. – Kon

1

Ваш метод sort лечит alphabet (The 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 другим способом.

Смежные вопросы