此代码编译,并且支持在用户输入的字符串中计算0-9中的数字整数并返回数字(因此,如果用户输入012234445666679,则输出为[1,1,2,1, 3,1,4,1,0,1])但是,在用户输入字符串后,没有任何反应!我错过了一些明显的东西吗我有返回和system.out.print指示,显然无济于事......
import java.util.*;
class RepeatedDigits
{
public static int [] countNumbers (String numberInput)
{
int [] numCount = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for (int i = 0; i < numberInput.length(); i++)
{
if (numberInput.charAt(i) == '0')
{
numCount[0]++;
}
if (numberInput.charAt(i) == '1')
{
numCount[1]++;
}
if (numberInput.charAt(i) == '2')
{
numCount[2]++;
}
if (numberInput.charAt(i) == '3')
{
numCount[3]++;
}
if (numberInput.charAt(i) == '4')
{
numCount[4]++;
}
if (numberInput.charAt(i) == '5')
{
numCount[5]++;
}
if (numberInput.charAt(i) == '6')
{
numCount[6]++;
}
if (numberInput.charAt(i) == '7')
{
numCount[7]++;
}
if (numberInput.charAt(i) == '8')
{
numCount[8]++;
}
if (numberInput.charAt(i) == '9')
{
numCount[9]++;
}
}
System.out.println(Arrays.toString(numCount));
return numCount;
}
public static void main (String [] args)
{
System.out.println("Please type in integers: ");
Scanner userNumbers = new Scanner(System.in);
String numberInput = userNumbers.nextLine();
}
}
另外,我试图找到一种方法让它忽略负号并同时取正负值(例如将-1计为1)。任何有关如何做到这一点的建议都会非常有帮助。
答案 0 :(得分:1)
你的程序在启动时会运行Main()。
您创建了一个名为countNumbers()的函数,但它实际上从来没有从Main()
调用您可能希望将此行添加到Main()的末尾:
countNumbers(numberInput);
否则它永远不会发生。
答案 1 :(得分:0)
这是因为你真的打印出numCount
数组中的元素,它就是一个计数数组,而不是用户输入的实际数字。从技术上讲,您所拥有的代码是打印numCount
,在输入0123456789
后会产生{1,1,1,1,1,1,1,1,1,1}因为每个号码将被计算一次。如果您想要返回用户输入的数字,那么您将不得不遍历数组,并且根据numCount[i]
的值,您需要多少次打印出i
。我建议更换
System.out.println(Arrays.toString(numCount));
带
for(int i = 0; i < numCount.length; i++){
for(int j = 0; j < numCount[i]; j++){
System.out.print(i + ' ');
}
}
答案 2 :(得分:0)
您必须将countNumbers
调用到主要方法中。
在你的主要方法中尝试这个。
public static void main (String [] args)
{
System.out.println("Please type in integers: ");
Scanner userNumbers = new Scanner(System.in);
String numberInput = userNumbers.nextLine();
System.out.println(Arrays.toString(countNumbers(numberInput)));
}
答案 3 :(得分:0)
您刚刚定义了countNumbers()
方法,但是您没有从main()
调用它,它应该按如下方式完成:
此外,以下countNumbers()
逻辑使用流可以轻松查找/计算每个数字在字符串内发生的次数。
public static void main (String [] args) {
System.out.println("Please type in integers: ");
Scanner userNumbers = new Scanner(System.in);
String numberInput = userNumbers.nextLine();
System.out.println(countNumbers (numberInput));
}
public static long [] countNumbers (String numberInput) {
String[] inputNumbers = numberInput.split("");
long[] output = Arrays.stream(inputNumbers).collect(
Collectors.groupingBy(
Function.identity(), Collectors.counting()
)
).entrySet().stream().
map(elemenet -> elemenet.getValue()).
mapToLong(Long::longValue).toArray();
return output;
}