我尝试使用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;
}
}
答案 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)
你试图用别的东西来调用它。