CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Java and JSP (http://www.codingforums.com/forumdisplay.php?f=54)
-   -   Java: I Can't pass a string variable into array? (http://www.codingforums.com/showthread.php?t=50248)

thehaunt 01-12-2005 10:51 PM

Java: I Can't pass a string variable into array?
 
I'm new to Java, very very new, and I have encountered a hair raising problem: I can't seem to pass the value of a string variable into a string array. It's very frustrating when I poll the array and get null as far as the eye can see. The code follows:
_________________________
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.String.*;

public class SntncArray extends Applet implements ActionListener
{
TextField theSntnc = new TextField(60);
Button pressMe=new Button("parse to array");
String fillIt;
String checkIt;
Label fillMe;
String[] sntncArray= new String[30];


public void init()
{
add(theSntnc);
add(pressMe);
pressMe.addActionListener(this);
}

public void actionPerformed(ActionEvent pressMe)
{
fillIt=new String (theSntnc.getText());
fillMe=new Label("FillIt"+fillIt);
add (fillMe);
invalidate();
validate();
brkSntnc(fillIt);
}

public void brkSntnc(String sntnc)
{
int x=0;
int wrdCnt=0;
int myLen;
while (x!=-1)
{
myLen=sntnc.length();
x=sntnc.indexOf(" ");
sntncArray[wrdCnt]=sntnc.substring(0,x-1);
wrdCnt++;
System.out.println("Before:"+sntnc);
sntnc=sntnc.substring(x+1,myLen);
System.out.println("After:"+sntnc);
System.out.println("Array at "+wrdCnt+" is:"+sntncArray[wrdCnt]);
}
}

}
____________________________

Basically I'm trying to write a class which accepts input (in the form of an applet) and breaks the words in the input into an array, one array slot for each word. So far, as I said before, sntncArray[wrdCnt]=sntnc.substring(0,x-1); always equals null, in spite of the fact that sntnc.substring(0,x-1); is a valid string. I'm clearly missing something very obvious, but I can't figure out what. I know that strings are objects and not primitives and so I can't use them as primitives (I think) but how can I pass the value of a given string into an array? I even tried making a string to hold the value of sntnc.substring(0,x-1); ("passer") and tried sntncAray[wrdCnt]=passer; but with the same result:Null. Any assistance is greatly appreciated. Greatly greatly. VERY Greatly greatly.
[Thnx]
//end

Antoniohawk 01-12-2005 11:29 PM

Could you please enclose your code with [ code ] tags so that it retain the formatting (I hope that it is formatted) and become easier to read. I want to help, but it's really hard when it takes so much effort just to deciper the thing. :)

cfc 01-13-2005 02:05 AM

fillIt=new String (theSntnc.getText());

Correct me if I'm wrong, but isn't the "new String( ... )" unnecessary?

sntncArray[wrdCnt]=sntnc.substring(0,x-1);

I believe substring excludes the last index you specify. Therefore, the -1 will probably return one less character than you want per word.

I'm a little out of practice with Java so I can't dissect your code (however small it is) ATM, and my suggestions probably won't fix your problem. I'll continue looking at it though ;) . However, if this is purely for personal experimentation (and not something you plan to put on the internet where nobody is guaranteed to have JRE 1.4), the String object has had a split(String regex) method since 1.4.

thehaunt 01-13-2005 03:10 PM

yeah the fillIt is unnecessary, I just put it there to make sure the input was accurate, rather than using System.out.println etc...


And above, how will putting [] around the code help it maintain it's formatting?

thehaunt 01-13-2005 03:23 PM

AHA!! Boy those FAQ's are handy!
Here you go, code in a more readable format!
Thanks for the tip.

Code:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;


public class SntncArray extends Applet implements ActionListener
  {
  TextField theSntnc = new TextField(60);
  Button pressMe=new Button("parse to array");
  String fillIt;
  String checkIt;
  Label fillMe;

  public void init()
      {
      add(theSntnc);
      add(pressMe);
      pressMe.addActionListener(this);
      }

  public void actionPerformed(ActionEvent pressMe)
      {
      fillIt=new String (theSntnc.getText());
      fillMe=new Label("FillIt"+fillIt);
      add (fillMe);
      invalidate();
      validate();
      brkSntnc(fillIt);
      }


  public void brkSntnc(String sntnc)
      {
      int x=0;
      int wrdCnt=0;
      int myLen;
      while (x!=-1)
        {
        myLen=sntnc.length();
        x=sntnc.indexOf(" ");
        sntncArray[wrdCnt]=sntnc.substring(0,x)
        wrdCnt++;
        sntnc=sntnc.substring(x,myLen);
        }
      }
}


cfc 01-14-2005 12:21 AM

Code:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;


/* <applet code="SntncArray.class" width="300" height="300"></applet> */

public class SntncArray extends Applet implements ActionListener
  {
  TextField theSntnc = new TextField(60);
  Button pressMe=new Button("parse to array");
  String fillIt;
  String checkIt;
  Label fillMe;
  String[] sntncArray = new String[30];

  public void init()
      {
      add(theSntnc);
      add(pressMe);
      pressMe.addActionListener(this);
      }

  public void actionPerformed(ActionEvent pressMe)
      {
      fillIt = theSntnc.getText();
      fillMe = new Label("FillIt" + fillIt);
      add (fillMe);
      invalidate();
      validate();
      brkSntnc(fillIt);
      }


  public void brkSntnc(String sntnc)
      {
      int x=0;
      int wrdCnt=0;
      int myLen;
      while (x!=-1)
        {
        myLen=sntnc.length();
        x=sntnc.indexOf(" ");
        sntncArray[wrdCnt] = sntnc.substring(0, x);
        wrdCnt++;
        sntnc=sntnc.substring(x, myLen);
        }
      }
}

You're sure this doesn't work for you? I compiled and opened it in appletviewer and it worked for me. (BTW what I meant is that you don't have to create a new String class when putting theSntnc.getText() into a new variable).

thehaunt 01-14-2005 03:18 AM

Oh man I feel so stupid, after days of looking at this code asking myself endlessly why it didn't work, I looked at what I posted and realized that the reason
Code:

System.out.println(sntncArray[wrdCnt]);
was returning null all the time was that I had placed the system out call AFTER incrementing wrdCnt instead of before. How embarrassing :P


All times are GMT +1. The time now is 11:50 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.