Page 1 of 3 123 Last
  • Jump to page:
    #1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1

    Errors With Tokenizing Dates Into New Format


    Hello,

    So I'm doing another exercise from the Ivor Horton Book on Beginner Java, and it asks to change a string array of 10 dates with the typical xx/xx/xx aka 09/17/01, September 17, 2001 for example into a European date format, ex: 17th September 2001.

    Basically I'm created the string array containing the dates I made up. I made a for loop that will look at each of the ten dates. The main problem I'm having is trying to utilize the .split function that is normally used on a string. I want to use delimiters that specify slash marks between the dates. I then made a for loop that will basically print each token that's taken from the initial string array. Is this the wrong approach? I don't know if I should go to previous chapters to maybe see if I can extract individual characters, add a 'th', etc to make a cave-man type way of doing this...

    Any ideas:


    Code:
    public class Chapt4_Exercise4 
    {
    	
    	public static void main(String[] args)
    	{
    		
    		/* 4. Define an array of ten String elements each containing an 
    		 * arbitrary string of the form “month/day/year”; 
    		 * 
    		 * for example, "10/29/99" or "12/5/01". 
    		 * 
    		 * Analyze each element in the array and output the date represented in 
    		 * the form 29th October 1999.
    	     */
    		
    		String [] ten_dates = {"5/17/91", "5/10/93", "6/13/73", "7/26/94",
    							   "6/21/96", "9/3/01", "10/25/05", "12/25/96",
    							   "8/21/93", "4/16/03"};
    		
    		String new_format_date;
    		
    		
    		// Look at each individual date of the array with a for loop:
    		
    		for(int i = 0; i < ten_dates.length; i++)
    		{
    			
    			// Make another for loop to examine the current date string:
    			for(int j = 0; j < ten_dates[i].length(); j++)
    			{
    				// Extract element # 2 and 3, and add it to a string 
    				// accumulator that will be used to output the date in the
    				// new format:
    				
    				new_format_date = new_format_date + ten_dates[2] + ten_dates[3];
    				
    				// Specify the delimiters you want to use to separate tokens:
    				String delimiters = "[/]"; 
    				
    				// Specify the limits for the beginning and end of the string:
    				int[] limits = {0, -1}; 
    
    				// Make a for loop that will go from the beginning to
    				// the end of the ten_dates string array:
    				for(int limit : limits) 
    				{
    					// Print out the limits:
    					System.out.println("\nAnalysis with limit = " + limit);
    					
    					// Create a string where you want to store the tokens
    					// aka the individual numbers from the xx/xx/xx date
    					// format:
    					String[] tokens = ten_dates.split(delimiters, limit);
    					
    					// Print out how many tokens you currently have:
    					System.out.println("Number of tokens: " + tokens.length);
    				
    				}
    				
    				// Create a for loop that will print out each token that's 
    				// stored in the tokens String [] array we just made:
    				for(String token : tokens) 
    				{
    					System.out.println(token);
    				}
    				
    			}
    			
    		}
    		
    	}		
    }
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    Should I even follow the tokenizer approach of splitting the string into multiple parts?

    Even looking back at what I did, I think up to the limits section is where I should stop trying reiterate similar examples in the book I have.

    Though honestly, everything up to that point makes sense, but even I don't know why I tried to split the string up into different tokens.

    Should I just add separate elements each time through that second for loop, and add a "th" or "rd" or "nd" depending on the particular day of the month.

    The only exceptions I can think of is the "nd" in 2nd, and the "rd" in the 3rd.

    Everything else will most likely have a "th" at the end of the particular day's name.

    I'm at a point where I don't know if I should over or undercomplicate things lol.
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    So I tried adding it to a subString array instead, but I can't manipulate the original ten_dates array, since I'm obviously using string only methods such as .indexOf(), .subString(), etc.

    Any ideas on how to fix my logic?

    This is my current revision:


    Code:
    public class Chapt4_Exercise4 
    {
    	
    	public static void main(String[] args)
    	{
    		
    		/* 4. Define an array of ten String elements each containing an 
    		 * arbitrary string of the form “month/day/year”; 
    		 * 
    		 * for example, "10/29/99" or "12/5/01". 
    		 * 
    		 * Analyze each element in the array and output the date represented in 
    		 * the form 29th October 1999.
    	     */
    		
    		String [] ten_dates = {"5/17/91", "5/10/93", "6/13/73", "7/26/94",
    							   "6/21/96", "9/3/01", "10/25/05", "12/25/96",
    							   "8/21/93", "4/16/03"};
    		
    		String new_format_date;
    		
    		
    		// Look at each individual date of the array with a for loop:
    		
    		for(int i = 0; i < ten_dates.length; i++)
    		{
    			
    			// Make another for loop to examine the current date string:
    			for(int j = 0; j < ten_dates[i].length(); j++)
    			{
    				// Extract element # 2 and 3, and add it to a string 
    				// accumulator that will be used to output the date in the
    				// new format:
    				
    				new_format_date = new_format_date + ten_dates[2] + ten_dates[3];
    				
    				// Specify the delimiters you want to use to separate tokens:
    				char separator = '/'; 
    				
    				int count = 0; 
    				
    				// Make a do while loop to coutn the number of substrings:
    				
    				
    				int index = 0; 
    				do 
    				{ 
    					++count; 
    					++index; 
    					index = ten_dates.indexOf(separator, index); 
    				} while (index != -1);
    				
    				// Extract the substring into an array:
    				String[] subStr = new String[count]; 
    				
    				index = 0; 
    				int endIndex = 0;  
    				
    				for(int k = 0; k < count; ++k) 
    				{ 
    					endIndex = ten_dates.indexOf(separator, index); 
    					
    					if (endIndex == -1) 
    					{ 
    						subStr[i] = ten_dates.substring(index); 
    					} 
    					
    					else 
    					{ 
    						subStr[i] = ten_dates.substring(index, endIndex); 
    					} 
    					
    					index = endIndex + 1;
    				}
    				
    				// Display the substrings so we can see what has 
    				// happened so far:
    				for(String s : subStr) 
    				{ 
    					System.out.println(s); 
    				}
    				
    				
    				
    				
    				
    			}
    			
    		}
    		
    	}		
    }
  6. #4
  7. Contributing User
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Aug 2010
    Location
    Eastern Florida
    Posts
    3,711
    Rep Power
    347
    Can you post the results from the program and add some comments showing what the results should be?
  8. #5
  9. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    Here is my output, AKA... a bunch of errors regarding Line 51. Its where I'm trying to assign the String class method .indexOf to ten_dates which is a String array, which is clearly wrong.

    This is my output:

    Code:
    
    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    	Cannot invoke indexOf(char, int) on the array type String[]
    	Cannot invoke indexOf(char, int) on the array type String[]
    	Cannot invoke substring(int) on the array type String[]
    	Cannot invoke substring(int, int) on the array type String[]
    
    	at Chapt4_Exercise4.main(Chapt4_Exercise4.java:51)

    The final result should be in a European date format, ex: 5/17/91 should be converted to: 17th May 1991

    What I was trying to do what to extract the second and third element from each string and to accumulate it into a substring to later manipulate it, but I'm not sure if this is the wrong approach.

    In fact, I think the first for loop should be removed and I should just continue with the substring approach like the paragraph example I did in a previous post on this forum.

    But the main problem is that I can't treat string arrays like string objects, so what methods could I use to extract specific elements from a given string and to store them into a new date format?
    Last edited by HauntJemimah; November 1st, 2013 at 01:46 PM.
  10. #6
  11. Contributing User
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Aug 2010
    Location
    Eastern Florida
    Posts
    3,711
    Rep Power
    347
    Cannot invoke indexOf(char, int) on the array type String[]
    An array does not have methods that can be called. You need to index into the array to get a String object using array notation []: aStringArray[ix].indexOf(...
  12. #7
  13. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    Alright, I made the changes like you mentioned to specifically index into a particular element of the ten_dates string array.

    The only confusion I have now, is how to specify the current element with the do-while loop. I set the current element to be examined for the array to be ten_dates[count], but should I just make it ten_dates[j] to be the second dimensional element?

    I changed the string accumulator to be a StringBuffer object, because the compiler was warning me that normal String objects are not mutable, so I guess I can't use it as an accumulator in this sense. Hmmm. This is on line 35.

    Looking at the results, I keep getting 73 and a bunch of nulls...

    Oh geez, this doesn't look good.


    Here's my output as well as the error on line 72:

    Code:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    	at Chapt4_Exercise4.main(Chapt4_Exercise4.java:72)
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    null
    null
    73
    Here's my code:

    Code:
    public class Chapt4_Exercise4 
    {
    	
    	public static void main(String[] args)
    	{
    		
    		/* 4. Define an array of ten String elements each containing an 
    		 * arbitrary string of the form “month/day/year”; 
    		 * 
    		 * for example, "10/29/99" or "12/5/01". 
    		 * 
    		 * Analyze each element in the array and output the date represented in 
    		 * the form 29th October 1999.
    	     */
    		
    		String [] ten_dates = {"5/17/91", "5/10/93", "6/13/73", "7/26/94",
    							   "6/21/96", "9/3/01", "10/25/05", "12/25/96",
    							   "8/21/93", "4/16/03"};
    		
    		
    		
    		// Look at each individual date of the array with a for loop:
    		
    		for(int i = 0; i < ten_dates.length; i++)
    		{
    			
    			// Make another for loop to examine the current date string:
    			for(int j = 0; j < ten_dates[i].length(); j++)
    			{
    				// Extract element # 2 and 3, and add it to a string 
    				// accumulator that will be used to output the date in the
    				// new format:
    				
    				StringBuffer new_format_date = new StringBuffer(ten_dates[2] + ten_dates[3]);
    				
    				// Specify the delimiters you want to use to separate tokens:
    				char separator = '/'; 
    				
    				int count = 0; 
    				
    				// Make a do while loop to coutn the number of substrings:
    				
    				// You need to index into the array to get a String object 
    				// using array notation []: aStringArray[ix].indexOf(...
    				
    				int index = 0; 
    				do 
    				{ 
    					++count; 
    					++index; 
    					index = ten_dates[count].indexOf(separator, index); 
    				} while (index != -1);
    				
    				// Extract the substring into an array:
    				String[] subStr = new String[count]; 
    				
    				index = 0; 
    				int endIndex = 0;  
    				
    				for(int k = 0; k < count; ++k) 
    				{ 
    					endIndex = ten_dates[k].indexOf(separator, index); 
    					
    					if (endIndex == -1) 
    					{ 
    						subStr[i] = ten_dates[k].substring(index); 
    					} 
    					
    					else 
    					{ 
    						subStr[i] = ten_dates[k].substring(index, endIndex); 
    					} 
    					
    					index = endIndex + 1;
    				}
    				
    				// Display the substrings so we can see what has 
    				// happened so far:
    				for(String s : subStr) 
    				{ 
    					System.out.println(s); 
    				}
    				
    				
    				
    				
    				
    			}
    			
    		}
    		
    	}		
    }
  14. #8
  15. Contributing User
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Aug 2010
    Location
    Eastern Florida
    Posts
    3,711
    Rep Power
    347
    how to specify the current element with the do-while loop.
    Use a variable that has the value of the index to the current element. Increment the variable to go to the next element.

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at Chapt4_Exercise4.main(Chapt4_Exercise4.java:72)
    At line 72 the code uses an index (3) that is past the end of the array.
    Remember array indexes range in value from 0 to the array's length-1
    An array with 3 elements would have indexes: 0,1,2


    I don't know how the program kept executing following that exception. Usually the program ends when it has an exception (unless try{}catch is used).
  16. #9
  17. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    WOOPS, wrong post, woah.
  18. #10
  19. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    Alright so I blocked off the rest of the code to understand what is going on in my do-while loop, and I actually understood what it is actually doing at that point in the code, for some reason these embedded for loops threw me off a little bit.

    Following the index value, its assigning the index to wherever a slash / is found, aka the separator between import digits that indicate the format for the date, which is fine.

    This loop is running past 30 times, which I think it should go to, because it should check each string 3 times for separators or the end of the date...

    I think the problem lies in how I'm implementing the variable k, that will check the current element that's being examined.

    I think that by incrementing k EACH TIME through the loop, its going to the next date without the loop checking the entire date and making the appropriate counts.

    Here's my code:


    Code:
    public class Chapt4_Exercise4 
    {
    	
    	public static void main(String[] args)
    	{
    		
    		/* 4. Define an array of ten String elements each containing an 
    		 * arbitrary string of the form “month/day/year”; 
    		 * 
    		 * for example, "10/29/99" or "12/5/01". 
    		 * 
    		 * Analyze each element in the array and output the date represented in 
    		 * the form 29th October 1999.
    	     */
    		
    		String [] ten_dates = {"5/17/91", "5/10/93", "6/13/73", "7/26/94",
    							   "6/21/96", "9/3/01", "10/25/05", "12/25/96",
    							   "8/21/93", "4/16/03"};
    		
    		
    		
    		// Look at each individual date of the array with a for loop:
    		
    		for(int i = 0; i < ten_dates.length; i++)
    		{
    			
    			// Make another for loop to examine the current date string:
    			for(int j = 0; j < ten_dates[i].length(); j++)
    			{
    				// Extract element # 2 and 3, and add it to a string 
    				// accumulator that will be used to output the date in the
    				// new format:
    				
    				StringBuffer new_format_date = new StringBuffer(ten_dates[2] + ten_dates[3]);
    				
    				// Specify the delimiters you want to use to separate tokens:
    				char separator = '/'; 
    				
    				int count = 0; 
    				
    				// Make a do while loop to coutn the number of substrings:
    				
    				// You need to index into the array to get a String object 
    				// using array notation []: aStringArray[ix].indexOf(...
    				
    				int index = 0; 
    				
    				// Set i equal to zero:
    				int k = 0;
    				
    				do 
    				{ 
    					++count; 
    					++index; 
    
    					// Post-increment k to make it equal to the next element 
    					// of the ten_dates string:
    					k++;
    					index = ten_dates[k].indexOf(separator, index); 
    					
    					// Make print statements to see what's going on:
    					System.out.println("Here is the current value of count: " + count);
    					System.out.println("Here is the current value of index: " + index);
    					System.out.println("Here is the current value of k: " + k);
    
    				} while (index != -1);
    				
    				// USE TWO MORE BRACES TO CLOSE OFF THE FOR LOOPS:
    			}
    		}
    				
    				
    				// BLOCK OFF BOTTOM PORTION OF CODE TO UNDERSTAND THE
    				// DO-WHILE LOOP:
    				
    				/*
    				
    				// Extract the substring into an array:
    				String[] subStr = new String[count]; 
    				
    				index = 0; 
    				int endIndex = 0;  
    				
    				for(int k = 0; k < count; ++k) 
    				{ 
    					endIndex = ten_dates[k].indexOf(separator, index); 
    					
    					if (endIndex == -1) 
    					{ 
    						subStr[i] = ten_dates[k].substring(index); 
    					} 
    					
    					else 
    					{ 
    						subStr[i] = ten_dates[k].substring(index, endIndex); 
    					} 
    					
    					index = endIndex + 1;
    				}
    				
    				// Display the substrings so we can see what has 
    				// happened so far:
    				for(String s : subStr) 
    				{ 
    					System.out.println(s); 
    				}
    				
    				
    				
    				
    				
    			}
    		
    			*/
    			
    		
    		
    		
    	}		
    }

    Here's my output (a bit long, but I know you might want to see it, maybe):

    Code:
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
    Here is the current value of count: 1
    Here is the current value of index: 1
    Here is the current value of k: 1
    Here is the current value of count: 2
    Here is the current value of index: 4
    Here is the current value of k: 2
    Here is the current value of count: 3
    Here is the current value of index: -1
    Here is the current value of k: 3
  20. #11
  21. Contributing User
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Aug 2010
    Location
    Eastern Florida
    Posts
    3,711
    Rep Power
    347
    The print out has a lot of useless text: "Here is the current value of "
    for debug you only need the variable name and its value: count=1

    You should debug each section of code by itself to make sure it is doing what you want. When a section works, move to the next section.
    Where in the code is the section you are currently working on?

    For testing: the ten_dates array should only have a few elements to make debugging shorter and easier. The program generates too much output, most of which is useless in solving the problem.

    The Arrays class's toString() method is useful for formatting arrays for printing:
    System.out.println("an ID "+ java.util.Arrays.toString(theArrayName));
    try it on the subStr array every time around the for loop to see what is going in the array.
  22. #12
  23. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    Okay, I added that toString method like you said. I also removed that StringBuffer object, because I get a feeling that's not the way to approach this anyway. I also made a debugging version of the ten_dates array that only contains three dates for testing purposes.

    I'm trying to debug the Do-While loop and figure out what's going on. What's bothering me is that its going out of bounds because its not like a for loop where I can tell it to stop if its out of bounds.

    Should I add an if statement that will take it out of the do-while loop?

    Or wait, that should be handled by the "while" section of the loop. So should I add an or statement like
    while(index != -1 || k != -1)?

    I'm a bit confused honestly, and I don't know why, again, for some reason for loops make total sense, but these do while loops piss me off for some reason lol.

    I get what's going on, but I'm trying to make sense on whether I'm really inside the current date that I'm looking at dimension-wise, aka are the sections in my for loops for i and j correct? --> is what I'm asking myself, and for some reason, I'm having trouble with that too.

    The way I see it, is that I have a for loop that will look at the first dimension of all the dates with i. Then the next for loop with j, looks at the next dimension aka a current string.

    Now, do I make a k variable containing for loop that will look at individual characters of the string, or is a for loop looking at j sufficient enough right now?

    I'm just trying to understand why the hell I'm making this do-while loop go out of bounds.

    Sorry for the free-form sentences, but this is how I'm trying to think this one out.

    Anyway, here's my code thus far and I noted where I'm trying to debug it:

    Code:
    public class Chapt4_Exercise4 
    {
    	
    	public static void main(String[] args)
    	{
    		
    		/* 4. Define an array of ten String elements each containing an 
    		 * arbitrary string of the form “month/day/year”; 
    		 * 
    		 * for example, "10/29/99" or "12/5/01". 
    		 * 
    		 * Analyze each element in the array and output the date represented in 
    		 * the form 29th October 1999.
    	     */
    		
    		// Debugging version of ten_dates that contains three dates for testing
    		// purposes:
    		String [] ten_dates = {"5/17/91", "5/10/93", "6/13/73"};
    		
    		// Old ten_dates String that contains real dates:
    		/*
    		String [] ten_dates = {"5/17/91", "5/10/93", "6/13/73", "7/26/94",
    							   "6/21/96", "9/3/01", "10/25/05", "12/25/96",
    							   "8/21/93", "4/16/03"};
    	    */
    		
    		
    		
    		// Look at each individual date of the array with a for loop:
    		
    		for(int i = 0; i < ten_dates.length; i++)
    		{
    			
    			// Make another for loop to examine the current date string:
    			for(int j = 0; j < ten_dates[j].length(); j++)
    			{
    				// Extract element # 2 and 3, and add it to a string 
    				// accumulator that will be used to output the date in the
    				// new format:
    				
    				// Specify the delimiters you want to use to separate tokens:
    				char separator = '/'; 
    				
    				int count = 0; 
    				
    				// Make a do while loop to coutn the number of substrings:
    				
    				// You need to index into the array to get a String object 
    				// using array notation []: aStringArray[ix].indexOf(...
    				
    				int index = 0; 
    				
    				// Set i equal to zero:
    				int k = 0;
    				
    				
    				// DEBUGGING PORTION IS HERE:
    				do 
    				{ 
    					++count; 
    					++index; 
    
    					// Post-increment k to make it equal to the next element 
    					// of the ten_dates string:
    					k++;
    					index = ten_dates[k].indexOf(separator, index); 
    					
    					// Make print statements to see what's going on:
    					System.out.println("count = " + count);
    					System.out.println("index = " + index);
    					System.out.println("k = " + k);
    					System.out.println("An ID: " + java.util.Arrays.toString(ten_dates));
    
    				} while (index != -1);
    				
    				// USE TWO MORE BRACES TO CLOSE OFF THE FOR LOOPS:
    			}
    		}
    				
    				
    				// BLOCK OFF BOTTOM PORTION OF CODE TO UNDERSTAND THE
    				// DO-WHILE LOOP:
    				
    				/*
    				
    				// Extract the substring into an array:
    				String[] subStr = new String[count]; 
    				
    				index = 0; 
    				int endIndex = 0;  
    				
    				for(int k = 0; k < count; ++k) 
    				{ 
    					endIndex = ten_dates[k].indexOf(separator, index); 
    					
    					if (endIndex == -1) 
    					{ 
    						subStr[i] = ten_dates[k].substring(index); 
    					} 
    					
    					else 
    					{ 
    						subStr[i] = ten_dates[k].substring(index, endIndex); 
    					} 
    					
    					index = endIndex + 1;
    				}
    				
    				// Display the substrings so we can see what has 
    				// happened so far:
    				for(String s : subStr) 
    				{ 
    					System.out.println(s); 
    				}
    				
    				
    				
    				
    				
    			}
    		
    			*/
    			
    		
    		
    		
    	}		
    }

    My output including an error is as follows:

    Code:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    	at Chapt4_Exercise4.main(Chapt4_Exercise4.java:67)
    count = 1
    index = 1
    k = 1
    An ID: [5/17/91, 5/10/93, 6/13/73]
    count = 2
    index = 4
    k = 2
    An ID: [5/17/91, 5/10/93, 6/13/73]
  24. #13
  25. Contributing User
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Aug 2010
    Location
    Eastern Florida
    Posts
    3,711
    Rep Power
    347
    I'm confused about what the program is supposed to do.
    Why are there 10 Strings in US date format in an array? Is there any relationship between one date and another date?
    Analyze each element in the array and output the date represented in
    * the form 29th October 1999.
    That seems to say there is no relationship between the elements. If that is true, change the array to hold one date and work on converting it.

    If "10/29/99" is the date and "29th October 1999" is the desired output:
    break date String into 3 parts
    the day is the second part
    the month is the first part
    the year is the third part.

    Then convert each part to its desired format:
    29 to 29th
    10 to October
    99 to 1999
  26. #14
  27. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    Originally Posted by NormR
    I'm confused about what the program is supposed to do.
    Why are there 10 Strings in US date format in an array? Is there any relationship between one date and another date?

    That seems to say there is no relationship between the elements. If that is true, change the array to hold one date and work on converting it.

    If "10/29/99" is the date and "29th October 1999" is the desired output:
    break date String into 3 parts
    the day is the second part
    the month is the first part
    the year is the third part.

    Then convert each part to its desired format:
    29 to 29th
    10 to October
    99 to 1999
    Awesome, step by step instructions are my favorite honestly, I've always liked a cookbook approach.

    Anyway, I hear you, I only chose 3 dates to make it simpler, but why work with 3 when I could just figure out how to apply it to 1 date and then work from there.

    Cool, I'll try this out!
  28. #15
  29. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2013
    Posts
    232
    Rep Power
    1
    I'm still confused on whether I'm really specifying the right dimensions for i j and k.

    I changed it to just one string, and it still won't run due to another out of bound error.

    Obviously, its an error in which I tried to utilize the .indexOf() method from the Array class.

    The problem really lies within my understanding of whether to use j or k to specify the current character that I'm looking at for a given string.

    I don't think I should ditch this do-while loop even though I hate it because it just confuses me for some reason, I know this has got to be the way to do it.

    Anyway, I did write down your three steps of what to do to extract it so thank you for even doing that, the steps are straight forward, but obviously my implementation is WAY off right now.

    The major thing is, should I do these three separate parts inside this do-while loop as well, because as its going through a given string, then I could add the first part, then the second part, then the third part.

    But what do I add them to? Do I add them to a string and somehow concatenate these results?

    Then do I add if statements to check for "th", "nd", and "rd" conditions for a given day of the month?

    I want to move forward, but this j and k elements are really preventing me from moving forward.

    Alright, once again, I'm gonna try reasoning this one out so I prove to you I'm trying to understand this, but I still am beating myself up for not knowing what the **** to do.

    i examines the first dimension, j examines the next dimension being the current string.

    Do I need to implement k to look at a given character or should j be sufficient?

    Here's my code:
    Code:
    public class Chapt4_Exercise4 
    {
    	
    	public static void main(String[] args)
    	{
    		
    		/* 4. Define an array of ten String elements each containing an 
    		 * arbitrary string of the form “month/day/year”; 
    		 * 
    		 * for example, "10/29/99" or "12/5/01". 
    		 * 
    		 * Analyze each element in the array and output the date represented in 
    		 * the form 29th October 1999.
    	     */
    		
    		// change the array to hold one date
    		String [] date = {"5/17/91"};
    		
    		// Old date String that contains real dates:
    		/*
    		String [] date = {"5/17/91", "5/10/93", "6/13/73", "7/26/94",
    							   "6/21/96", "9/3/01", "10/25/05", "12/25/96",
    							   "8/21/93", "4/16/03"};
    	    */
    		
    		
    		
    		// Look at each individual date of the array with a for loop:
    		
    		for(int i = 0; i < date.length; i++)
    		{
    			
    			// Make another for loop to examine the current date string:
    			for(int j = 0; j < date[j].length(); j++)
    			{
    				// Extract element # 2 and 3, and add it to a string 
    				// accumulator that will be used to output the date in the
    				// new format:
    				
    				// Specify the delimiters you want to use to separate tokens:
    				char separator = '/'; 
    				
    				int count = 0; 
    				
    				// Make a do while loop to count the number of substrings:
    				
    				// You need to index into the array to get a String object 
    				// using array notation []: aStringArray[ix].indexOf(...
    				
    				int index = 0; 
    				
    				// Set i equal to zero:
    				int k = 0;
    				
    				// Break the date string into 3 parts:
    				// First Part: Month 
    				// Second Part: Day 
    				// Third Part: Year 
    				
    				// HERE'S FIRST PART (MONTH):
    				do 
    				{ 
    					++count; 
    					++index; 
    
    					// Post-increment k to make it equal to the next element 
    					// of the date string:
    					k++;
    					// Assign the current index value to use the .indexOf
    					// method on the current el
    					index = date[j].indexOf(separator, index); 
    					
    					// Make print statements to see what's going on:
    					System.out.println("count = " + count);
    					System.out.println("index = " + index);
    					System.out.println("k = " + k);
    					System.out.println("An ID: " + java.util.Arrays.toString(date));
    
    				} while (index != -1 || k != -1);
    				
    			}
    		}
    	}		
    }
    Here's my output using just k in the .indexOf code on line 72:
    Code:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    	at Chapt4_Exercise4.main(Chapt4_Exercise4.java:72)
    Here's my output using j instead for the .indexOf line of code (aka an endless loop, holy ****):

    Code:
    index = -1
    k = 89829
    An ID: [5/17/91]
    count = 89830
    index = 1
    k = 89830
    An ID: [5/17/91]
    count = 89831
    index = 4
    k = 89831
    An ID: [5/17/91]
    count = 89832
    index = -1
    k = 89832
    An ID: [5/17/91]
    count = 89833
    index = 1
    k = 89833
    An ID: [5/17/91]
    count = 89834
    index = 4
    k = 89834
    An ID: [5/17/91]
    count = 89835
Page 1 of 3 123 Last
  • Jump to page:

IMN logo majestic logo threadwatch logo seochat tools logo