import java.util.ArrayList;
import java.util.Scanner;
public class CharacterFrequency {
public static void arrayDigits(String number){
int size = number.length();
ArrayList<Integer> result = new ArrayList<Integer>(size);
for (int i = 0; i < number.length(); i++){
int element = number.charAt(i) - '0';
result.add(element);
}
countDigits(result);
}
public static void countDigits(ArrayList<Integer> array){
int size = array.size();
for (int i = 0; i < size; i++){
int position = i;
int count = 0;
for (int j = 0; j < size; j++){
int element = array.get(j);
if (position == element){
count++;
array.set(j, count);
}
}
System.out.println("The number of " + i + " is " + array.get(i));
}
}
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter your phone number, area code first");
String phoneNumber = keyboard.next();
arrayDigits(phoneNumber);
}
}
11 Replies - 310 Views - Last Post: 30 January 2013 - 08:31 AM
#1
Count frequency of numbers in a phone number using ArrayList
Posted 28 January 2013 - 08:43 PM
Replies To: Count frequency of numbers in a phone number using ArrayList
#2
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 01:38 AM
int[] phoneNumber = {5,5,5,3,3,3,1,2,1,2};
int[] frequency = new int[10];
for(int number : phoneNumber) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
This post has been edited by farrell2k: 30 January 2013 - 03:52 PM
#3
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 06:08 AM
farrell2k, on 29 January 2013 - 02:38 AM, said:
int[] phoneNumber = {5,5,5,3,3,3,1,2,1,2};
int[] frequency = new int[phoneNumber.length];
for(int number : phoneNumber) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
I know how to do it that way, which i have, but I need to do it using ArrayList.
#4
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 08:48 AM
#5
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 08:59 AM
farrell2k, on 29 January 2013 - 08:38 AM, said:
int[] phoneNumber = {5,5,5,3,3,3,1,2,1,2};
int[] frequency = new int[phoneNumber.length];
for(int number : phoneNumber) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
It should be
int[] frequency = new int[10];
Instead of
int[] frequency = new int[phoneNumber.length];
You really should be able to take his code, and just replace the array with an ArrayList
This post has been edited by CasiOo: 29 January 2013 - 09:01 AM
#6
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 09:04 AM
CasiOo, on 29 January 2013 - 03:59 PM, said:
farrell2k, on 29 January 2013 - 08:38 AM, said:
int[] phoneNumber = {5,5,5,3,3,3,1,2,1,2};
int[] frequency = new int[phoneNumber.length];
for(int number : phoneNumber) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
It should be
int[] frequency = new int[10];
Instead of
int[] frequency = new int[phoneNumber.length];
I do not understand why.
#7
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 09:08 AM
8 and 9 are out of bounds
public class Snippet {
/**
* @param args
*/
public static void main(String[] args) {
int[] phoneNumber = { 1, 2, 3, 4, 1, 5, 8, 9 };
int[] frequency = new int[phoneNumber.length];
for(int number : phoneNumber) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
}
}
Here they are not
public class Snippet {
/**
* @param args
*/
public static void main(String[] args) {
int[] phoneNumber = { 1, 2, 3, 4, 1, 5, 8, 9 };
int[] frequency = new int[10];
for(int number : phoneNumber) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
}
}
#8
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 09:20 AM
farrell2k, on 29 January 2013 - 09:48 AM, said:
I think I have use the .set option after creating the frequency array.
so it would have to be something like
ArrayList<Integer>frequency = new ArrayList<Integer>(size);
int count = 0;
for (int element: originalArray){
frequency.set(element, count++);
}
i think.
i know how to do it when building an array using int [] whatever = new int[10], etc. but just not using ArrayList.
#9
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 09:23 AM
ArrayList<Integer> number...
int[] frequency = new int[10]; //thanks CasiOo.
for(int number : number) {
++frequency[number];
}
int count = 0;
for (int freq : frequency) {
System.out.println(count + " occurs "+ freq + " times.");
count++;
}
Unless I am way off in my thinking, which is completely possible, this will work.
This post has been edited by farrell2k: 30 January 2013 - 03:53 PM
#10
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 09:31 AM
dfl2m, on 29 January 2013 - 04:20 PM, said:
farrell2k, on 29 January 2013 - 09:48 AM, said:
I think I have use the .set option after creating the frequency array.
so it would have to be something like
ArrayList<Integer>frequency = new ArrayList<Integer>(size);
int count = 0;
for (int element: originalArray){
frequency.set(element, count++);
}
i think.
i know how to do it when building an array using int [] whatever = new int[10], etc. but just not using ArrayList.
Almost. The ArrayList should contain how many times a number has occurred
So if the number 1 occurs 5 times, the follow should be true
frequency.get(1) == 5
Will this be the case with your own code? No!
You are using the same count variable for all the numbers
What you are currently counting is how many numbers there are, not the individual count of them =o
I think farrell2k is drunk right now, he doesn't seem like his normal self right now
#11
Re: Count frequency of numbers in a phone number using ArrayList
Posted 29 January 2013 - 09:32 AM
CasiOo, on 29 January 2013 - 10:29 AM, said:
dfl2m, on 29 January 2013 - 04:20 PM, said:
farrell2k, on 29 January 2013 - 09:48 AM, said:
I think I have use the .set option after creating the frequency array.
so it would have to be something like
ArrayList<Integer>frequency = new ArrayList<Integer>(size);
int count = 0;
for (int element: originalArray){
frequency.set(element, count++);
}
i think.
i know how to do it when building an array using int [] whatever = new int[10], etc. but just not using ArrayList.
Almost. The ArrayList should contain how many times a number has occurred
So if the number 1 occurs 5 times, the follow should be true
frequency.get(1) == 5
Will this be the case with your own code? No!
You are using the same count variable for all the numbers
What you are currently counting is how many numbers there are, not the individual count of them =o
okay, i will have to look at my code later b/c i'm at work.
#12
Re: Count frequency of numbers in a phone number using ArrayList
Posted 30 January 2013 - 08:31 AM
for (int i = 0; i < frequencySize; i++){
int count = 0; //reset this after every iteration of the outer loop
for (int j = 0; j < arraySize; j++){
if (i == array.get(j)){ //for example, if i = 0, and array.get(j) = 0, then
count++; //incremement count by 1
frequency.set(i, count); // set frequency(0, 1)
}
}
System.out.println("The number of " + i + " is " + frequency.get(i));
}
|
|

New Topic/Question
Reply



MultiQuote




|