搜索和排序值

时间:2014-12-20 21:36:19

标签: java arrays methods

我尝试使用charAt逐个扫描输入并对字母表进行排序。如果输入中有2个,则列表数组应以2开头。如果有1' b'在输入列表中[1] = 1.如果c被使用3次列表[2] = 3.我想对所有英文字母都这样做。 例如,如果输入是"我买了一辆车。" 输出应为2 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 注意:该方法不区分大小写。

错误:类排序中的方法sortInput不能应用于给定的类型;在第24行 我该怎么办?

更新:现在我得到了一个输出,但我得到了一个26长的数组,其中所有数据都有0次,为26次。

import java.util.*;

public class sorting 
{

    public static void main(String[] args) 
    {
        String input;
        int i;
        int[] list = new int[26];
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter an input");
        input = scan.nextLine();
        for(i = 0; i <= list.length; i++)
        {
            System.out.print(Arrays.toString(sortInput(Integer.toString(list[i]))) + " ");
        }

    }

    public static int[] sortInput(String input)
    {
        input = input.toLowerCase();
        char k,l;
        int i, j;
        String alphabet;
        alphabet = "abcdefghijklmnopqrstuvwxyz";
        char[] letter = new char[26];
        int[] list = new int[26];
        j = 0;
        for(i = 0; i <= alphabet.length() - 1; i++)
        {
            k = alphabet.charAt(i);
            letter[i] = k;  
        }
        for(i = 0; i <= input.length() - 1; i++)
        {
            l = input.charAt(i);        
            if(letter[i] == l)
            {
                for(i = 0; i <= input.length() - 1; i++)
                {
                   if(letter[i] == l)
                   {
                       j = 0;
                       j++;
                   }
                }
            }
            list[i] = j;        
        }
        return list;    
    }

}

3 个答案:

答案 0 :(得分:2)

您的实例方法sortInput(String)不适用于sortInput(int)

sortInput(list[i])

可能类似

sortInput(Integer.toString(list[i]))

或将方法更改为int。或许你想要

sortInput(input)

@MikeKobit here指出,它还需要static(或者您需要一个实例)。

修改

根据您的评论。传入input,您的方法应该类似于

public static int[] sortInput(String input) {
    input = input.toLowerCase();
    int[] list = new int[26];
    for (char ch : input.toCharArray()) {
        if (ch >= 'a' && ch <= 'z') {
            list[ch - 'a']++;
        }
    }
    return list;
}

public static void main(String[] args) {
    String input = "I bought a car.";
    int[] out = sortInput(input);
    for (int i : out) {
        System.out.print(i);
        System.out.print(" ");
    }
    System.out.println();
}

修改2

没有toCharArray()

public static int[] sortInput(String input) {
    input = input.toLowerCase();
    int[] list = new int[26];
    for (int i = 0, len = input.length(); i < len; i++) {
        char ch = input.charAt(i);
        if (ch >= 'a' && ch <= 'z') {
            list[ch - 'a']++;
        }
    }
    return list;
}

答案 1 :(得分:1)

您正尝试从静态上下文调用方法sortInput,这是一种实例方法。您可以实例化您尝试调用方法的类,或者在这种情况下,您似乎希望该方法为static

public static int[] sortInput(String input)

您还尝试使用不正确的类型参数调用该方法。

int[] list = new int[26];
...
sortInput(list[i])

您目前正在尝试使用int而不是String来调用您的方法。

答案 2 :(得分:1)

比较您的

System.out.print(sortInput(list[i]) + " ");

public int[] sortInput(String input)

你试图用别的东西来调用它。