开发者

copying array values from one class to another

Im stuck with the following problem,

I've two classes, the first is readFromFile and the second class is newClass

readFromFile.java -

  • This reads a text file
  • Parses the lines of text into seperate strings
  • The values of these strings are stored in a String [ ] called dArray
  • For testing I've printed all values out and it works

newClass.java

  • This class is intended to copy the value of the string [ ] dArray into a new string and from there use the values ( for simplicity all I've included in the newClass is the code relating to copying the array)
  • What I'm doing wrong is that I'm returning dArray but its returning an array with nothing stored in it, so I either need a way to call main method from readFromFile.class / help creating a method in readFromFile that would do the same which I call from main

please help

 import java.util.Scanner;
import java.io.*;

public class readFromFile
{
static String[] dArray = new String [30];

   public static v开发者_Python百科oid main (String[] args) throws IOException
   {
      String part;
      Scanner fileScan, partScan;
      int i = 0;
      int x = 0;

     fileScan = new Scanner (new File("C:\\stuff.txt"));

     // Read and process each line of the file
      while (fileScan.hasNext())
      {
         part = fileScan.nextLine();

         partScan = new Scanner (part);
         partScan.useDelimiter(":");

         while ( partScan.hasNext()){
         dArray[i] = partScan.next();
         i++;
         }
      }
        for (x = 0;x<i;x++)
       { System.out.println(dArray[x]);
   }


   }   
        public String[] getArray()
  {
  return dArray;
           }}

newClass.java

public class newClass {

  readFromFile results = new readFromFile();// creating object from class readFromFile


 public void copyArray() { 

       String[] dArray = results.getArray();  // Trying to return the values of String [] dArray from rr classs  
                         //Method getArray in rr class is  
                         //  public String[] getArray()
                         // { return dArray; } 

        String[] arrayCopy = new String[dArray.length];

        System.arraycopy(dArray, 0, arrayCopy, 0, dArray.length);

        for (int i = 0; i < arrayCopy.length; i++)
            System.out.println(arrayCopy[i]);

    }


    public static void main(String[] args) {
       newClass.copyArray();
    }
}


Your results generation is in readFromFile.main(), but you're expecting to call it in your readFromFile(). You need to make a constructor for readFromFile, and call that in your main method, as well.


The problem is that both classes have a main method. Only the class that you intend to run should have a main method, the other classes need only constructors. Assuming you want to run a unshown class it would be written like this.

public class ThirdClass{
public static void main(String[] args) {
   readFromFile reader = new ReadFromFile();
   newClass copy = new newClass();

   reader.readFromFile();
   String[] strings = reader.getArray();

   copy.copyArray(strings)

}

For this to work you need to put all of the code in the main of readFromFile in a method called "readFromFile". and you need a method in newClass that accepts a string array as an argument. Or a constructor that accepts a string array.

Make sure that neither of them have main methods or it won't work.


  1. Remove the static keyword before your dArray variable
  2. Change public static void main(String[] args) throws IOException in your first class to public readFromFile() throws IOException. Keep the code inside it the same.
  3. Change the line newClass.copyArray(); in your second class to (new newClass()).copyArray();
  4. Move the line in your second class readFromFile results = new readFromFile(); into the public void copyArray() method.
  5. Change public void copyArray() in your second class to public void copyArray() throws IOException
  6. Put a try..catch block around your code in the second class's main method. i.e. change (new newClass()).copyArray(); to something like try { (new newClass()).copyArray(); } catch (IOException e) { e.printStackTrace(); }

The above should get your thing working, but a friendly note would be to experiment with the code (once it works) since it's an excellent example to understand how static keywords are used, how Exceptions are handled or thrown, and how IO is used. ;)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜