Hi

I'm i beginner in java :$
and i have a problem .... with the code

they want from me to write a program that reads and prints the number of occurrence of each alphabetical letter in the string . the program should call a method to creat an array for the counters of the letters , and use another overloaded method that receives a character and updates the corresponding counter and finally call a third method to print the counts


this is my code and i just cant get it right ....!!

import java.util.*;
import java.lang.*;
public class Q2
{
public static void main (String args[])
{
Scanner console=new Scanner(System.in);

int []coun;



System.out.println("Enter the Sentence");
String str=console.nextLine();
coun=new int[str.length()];
str=str.toLowerCase();
int i=0;
while(i<str.length()){
char s=str.charAt(i);
int counter=0;
if(Character.isLetter(str.charAt(i)))

for(int j=0;j<str.length();j++){
char t=str.charAt(j);
if(Character.isLetter(str.charAt(j)))
if(t==s)
counter++;
i++;
System.out.print(t+"="+(counter)+",");

}}
counterr(counter,coun);// here there is a compile error that symbol  : variable counter
}


public static void counterr (int counter,int[] coun)
{
for(int index=0;index<coun.length;index++)
coun[index]=counter;




}

}

and when i remove the method and leave only the main the run is like that

Enter the Sentence
java
j=1,a=1,v=1,a=1,

:(

Re: i need help in java please with my code 80 80

int counter = 0;
This varible need to be declared before while-loop L:18

Re: i need help in java please with my code 80 80

it can simply be like that

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        System.out.println("please enter your sentence: ");
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();

        int counter = 0;
        String taken = "";
        
        for (int i = 0; i < input.length(); i++) {

            String key = input.substring(i , i+1);

            if(taken.contains(key)) continue;

            for (int j = 0; j < input.length(); j++) {

                if(key.compareTo(input.substring(j , j+1)) == 0){ counter++; }//end of if

            }//end of inner for loop

            System.out.println(key + " : " + counter); taken += key; counter = 0;

        }//end of outer for loop

    }//end of main method

}//end of main class
Re: i need help in java please with my code 80 80

sorry but i cant get it :(

is my code wrong because i used charAt?!!

i mean why didn't u do it with charAT and == ??!!

isn't it easier than substring ?!! and compare ?!!


and another Question ... is my code correct i mean should i do that
loop then i fill the array ?!!

or i should count with the array ?!!

thank u very much <333

Re: i need help in java please with my code 80 80

I think you can do it anyway with sub-string or charArt(x)... I think with charArt is easier. Following the K.I.S.S rule.
I tried recraeating the whole code.Please note that my code only tests for the occurence of the first letter of the sentence will try finishing the code during this week using a class and methods.....:D

/*Q2.java...
 *Dennis Wanyoike
 *madawarstudies@gmail.com
 *Please note that i have only tried to check the occurence of the first letter only
 **/
import javax.swing.*;
public class Q2
{
	public static void main(String args[])
	{
		String sentence;
		String c_sentence;
		int size,no=0,post=0;
		
		
		
		
		sentence=JOptionPane.showInputDialog("Enter Your Sentence!");
		sentence=sentence.toUpperCase();
		c_sentence=sentence;
		
		/*gets size of input string with whitespaces
		 *dont know how to remove whitespaces yet as they are counted
		 *in the loop below as characters*/
		
		size=sentence.length();
		
		//prints out inputted characters
		for(int x=0;x<size;x++)
		{
			System.out.println(sentence.charAt(x));
		}
		//checks for occurences of first letter in the sentence only
		for (int y=0;y<size;y++)
		{
			if(sentence.charAt(post)==c_sentence.charAt(y))
			{
				
				no=no+1;
				
			}
			
		
		JOptionPane.showMessageDialog(null,"Occurence of " +sentence.charAt(0)+" is "+no);	
		}
	
	}
}

I also do think that use of ArrayList would be suitable as the sentence has varying number of characters and it is impossible to determine the number of indexes needed

Re: i need help in java please with my code 80 80

java 1990 you can do it by substring or charAt no problem , using substring seems to be much more harder but i really prefer , by using charAt the code will be like this

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        System.out.println("please enter tour sentence: ");
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();

        String taken = "";

        for (int i = 0; i < input.length(); i++) {

            char key = input.charAt(i); int counter = 0;

            if(check(key, taken)) continue; //the key was previously found so we will not take it

            for (int j = 0; j < input.length(); j++) {

                if(key == input.charAt(j)){ counter++; taken += key;}

            }//end of inner for loop

            System.out.println(key + " : " + counter);

        }//end of outer for loop

    }//end of main method

    public static boolean check(char key , String taken){

        boolean found = false;
        
        for (int i = 0; i < taken.length(); i++) {
            
            if(key == taken.charAt(i)){ found = true; break; }//end of if
            
        }//end of for loop

        return found;

    }//end of check

}//end of main class

by looking at your code , if(Character.isLetter(str.charAt(j)) i don't really know what this method does. bro try to trace it step by step and believe me you will get it.

Re: i need help in java please with my code 80 80

by the way java 1990 if you look at my code you will find that i created a string called taken which i put in what i have taken , and check every time so i can't take it again(which happened in you code)so TRY it and ENJOY

madawar it is more simple than doing it by array list believe...ENJOY

Re: i need help in java please with my code 80 80

thank u very very much u helped me a lot ...!!

i want at least the general idea so thanks ...

they want us to do it by array ... i will do like urs but with arrays ...!!

abdel

by looking at your code , if(Character.isLetter(str.charAt(j))

if it space then i dont want to count it ;$

u know i think my problem was with taken ""

thank u <333

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.19 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.