Я делаю программу, чтобы подсчитать длину каждого слова, а затем количество вхождений этой длины.Считайте длину слова с появлением
Например:
Enter a String :I love my work
The word count is -
No. of words of length 1 are 1.
No. of words of length 2 are 1.
No. of words of length 4 are 2.
До сих пор я попытался это,
import java.util.Scanner;
class Demo{
public static void main(String[] args){
String s;
Scanner sc=new Scanner(System.in);
System.out.print("Enter a String :");
s=sc.nextLine();
String[] arr = s.split(" ");
String str = "";
int [] len = new int[arr.length];
int [] count = new int[arr.length];
int c = 0;
for(int i=0;i<arr.length;i++){
str = arr[i];
len[i] = str.length();
for(int j=0;j<arr.length;j++){
if(str.length() == arr[j].length()){
count[i] = ++c;
}
}
c = 0;
}
for(int i=0;i<len.length;i++){
System.out.println("No. of words of length "+len[i]+" are "+count[i]+".");
}
}
}
Существует проблема в моей логике, и именно поэтому его вывод таков:
Enter a String :I love my work
The word count is -
No. of words of length 1 are 1.
No. of words of length 2 are 1.
No. of words of length 4 are 2.
No. of words of length 4 are 2.
Любое предложение, как исправить это или любой другой более простой способ сделать это (без использования коллекций, карт).
Прежде всего, вы должны использовать HashMap для хранения счетчиков. Карта <"число, которое вы считаете", "количество вхождений"> является стандартным способом его решения. –
Вы получите избыточный выход для каждого слова одинаковой длины. Используйте карту, как указал Марцин. –