我的Android手机中有一个代码可以通过collections.frequency查找重复的数字。此代码仅在android上的java程序中正常工作。但不是作为Android上的应用程序。这是我在android中的代码。
ArrayList<String> ll = new ArrayList<String>();
String item = inputText.getText().toString();
ll.add(item);
HashSet<String> set = new HashSet<>(ll);
for (String temp : set)
{
answertext.setText(temp + "shows that many times: " + Collections.frequency(ll, temp));
}
输出如下:
33 44 33 44 shows that many times: 1
如果用户通过文本框输入数字,则找不到任何重复项。 但是,如果在代码中取消userinput并将其替换为此输入:
ll.add("33");
ll.add("44");
ll.add("33");
ll.add("44");
ll.add("24");
ll.add("24");
输出将如此:
44 shows that many times: 2
因此,在此输入中,collections.frequency正在查找重复的数字。但为什么只有一个数字?为什么44而不是33?为什么它不输出所有重复的数字,就像它只在手机上作为java程序一样。没有涉及Android? 我想通过文本框中的userinput使其工作。 在它工作正常的Java端我得到了这个代码:
List<String> list = new ArrayList<String>();
Scanner stdin = new Scanner(System.in);
System.out.println("Enter the amount of numbers you want to input: Input numbers separated by a space.");
int n = stdin.nextInt();
for (int i = 0; i < n; i++)
{
list.add(stdin.next());
}
System.out.println("\nCount all with frequency");
Set<String> uniqueSet = new HashSet<String>(list);
for (String temp : uniqueSet)
{
System.out.println(temp + " shows that many times : " + Collections.frequency(list, temp));
}
//Enter the amount of numbers you want to input
12 //hit the return key
22 33 44 22 33 44 22 33 44 22 33 44
//the output is like so:
Count all with frequency
33 shows that many times: 4
44 shows that many times: 4
22 shows that many times: 4
为什么这段代码在Java中运行而在android上运行?
答案 0 :(得分:0)
String item = inputText.getText().toString();
ll.add(item);
这会在列表中添加一个项目。我猜你想单独添加每个单词,你可以这样做:
// split the input apart at the spaces
String[] items = inputText.getText().toString().split(" ");
// then add each part separately to the list
for(String item : items)
ll.add(item);
你的第二个问题是setText
...设置了文本。它没有添加到文本的末尾,它取代了已经存在的内容。我不知道你打算如何显示多个字符串,但你可以这样做:
// clear answertext
answertext.setText("");
for (String temp : set)
{
// set the text to <whatever was already there> followed by this item
answertext.setText(answertext.getText() + temp + "shows that many times: " + Collections.frequency(ll, temp) + "\n");
}