Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

scope of varibles & conversion

Posted on 2009-04-06
4
Medium Priority
?
263 Views
Last Modified: 2012-05-06
Hi All,
I have a variable as shown below:
String curVal=request.getParameter("curVal");
// values are like -> only 4 (or)  only 4, 5 (or)  only  4,  5,  6
so now I want to store this values in array, so lets think values in "curVal -> 4,  5,  6"
 int items[] = new int[4];
 java.util.StringTokenizer st = null;
   if(curVal.length() > 0)
   {
      st = new java.util.StringTokenizer(curVal,",");
   }
        int j;
       for(j=0;j<4;j++)
       {
          while(st.hasMoreTokens())
             {
                  items[j]= Integer.parseInt(st.nextToken());
                  System.out.println("array :"+items[j]);
             }
       }
            // now I am expecting  4, 5,6,0 in array in the below statements, but I am getting 6,0,0,0 why?
            System.out.println("array 0:"+items[0]);
            System.out.println("array 1:"+items[1]);
            System.out.println("array 2:"+items[2]);
            System.out.println("array 3:"+items[3]);
%>

Thanks in advance.
0
Comment
Question by:prk_usa
  • 4
4 Comments
 
LVL 12

Expert Comment

by:basav_com
ID: 24079500
Here you messed up the code.

                   for(j=0;j<4;j++)
                   {
                      while(st.hasMoreTokens())
                         {
                              items[j]= Integer.parseInt(st.nextToken());
                              System.out.println("array :"+items[j]);
                         }
                   }
0
 
LVL 12

Accepted Solution

by:
basav_com earned 2000 total points
ID: 24079548
Take a look at this example:

output:
array :4
array :5
array :6
array 0:4
array 1:5
array 2:6
array 3:0
public class SampleStringTest {
	public static void main(String args[]){
		//String curVal=request.getParameter("curVal");
		String curVal = "4,5,6";
        //		 values are like -> only 4 (or)  only 4, 5 (or)  only  4,  5,  6
		//so now I want to store this values in array, so lets think values in "curVal -> 4,  5,  6"
		 int items[] = new int[4];
		 java.util.StringTokenizer st = null;
		   if(curVal.length() > 0)
		   {
		      st = new java.util.StringTokenizer(curVal,",");
		   }
		        int j=0;
 
		          while(st.hasMoreTokens())
		             {
		                  items[j]= Integer.parseInt(st.nextToken());
		                  System.out.println("array :"+items[j]);
		                  j++;
		             }
		
		            // now I am expecting  4, 5,6,0 in array in the below statements, but I am getting 6,0,0,0 why?
		            System.out.println("array 0:"+items[0]);
		            System.out.println("array 1:"+items[1]);
		            System.out.println("array 2:"+items[2]);
		            System.out.println("array 3:"+items[3]); 
	}
}

Open in new window

0
 
LVL 12

Expert Comment

by:basav_com
ID: 24079601
Your code is messed up because you are looping again using the for loop.  You have alread used while(st.hasMoreTokens) to loop thru all the tokens and you actually stored everything in the
items[0] element only.
  while(st.hasMoreTokens())
                         {
                              items[j]= Integer.parseInt(st.nextToken());
                              System.out.println("array :"+items[j]);    ---------------> Print j also here. Then you will understand.
                                                     
                                              }

And then again looped the array again using for loop.


So look at my code, I simply removed the for loop and stored the elements in items[0] to items[2] using the while loop and by incrementing 'j' each time.

Ask me more if you don't understand the explanation :)
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Transferring FSMO roles is done when an admin wants to split roles between certain Domain Controllers or the Domain Controller holding the Roles has been forcefully demoted using dcpromo / forceremoval
Your business may be under attack from a silent enemy that is hard to detect. It works stealthily in the shadows to access and exploit your critical business information, sensitive confidential data and intellectual property, for commercial gain. T…
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Suggested Courses

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question