将数组值从一个类复制到另一个类

时间:2011-03-21 21:00:31

标签: java arrays string

我遇到了以下问题,

我有两个类,第一个是readFromFile,第二个类是newClass

readFromFile .java -

  • 这是读取文本文件
  • 将文本行分解为单独的字符串
  • 这些字符串的值存储在名为 dArray
  • 的String []中
  • 为了测试我已经打印出所有的值并且它可以正常工作

的NewClass 的.java

  • 此类旨在将字符串[] dArray 的值复制到一个新字符串中,然后使用这些值(为简单起见,我将其包括在内) newClass是与复制数组有关的代码)
  • 我做错了是我正在返回 dArray 但它返回的数组中没有任何内容存储在其中,所以我要么需要一种方法来调用main readFromFile.class / help中的方法在readFromFile中创建一个方法,该方法与我从main调用的方法相同

请帮助

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

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

   public static void 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();
    }
}

3 个答案:

答案 0 :(得分:1)

您的结果生成在readFromFile.main()中,但您希望在readFromFile()中调用它。你需要为readFromFile创建一个构造函数,并在main方法中调用它。

答案 1 :(得分:0)

问题是这两个类都有一个主方法。只有您打算运行的类应该有一个main方法,其他类只需要构造函数。假设你想要运行一个未示出的类,它将被写成这样。

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)

}

为此,您需要将所有代码放在readFromFile的主体中,并将​​其放在名为“readFromFile”的方法中。你需要一个newClass中的方法,它接受一个字符串数组作为参数。或者是接受字符串数组的构造函数。

确保它们都没有主要方法,否则无效。

答案 2 :(得分:0)

  1. dArray变量
  2. 之前删除static关键字
  3. 将您的第一堂课public static void main(String[] args) throws IOException改为public readFromFile() throws IOException。保持代码内容相同。
  4. 将第二节课中的newClass.copyArray();行更改为(new newClass()).copyArray();
  5. 将第二个班级readFromFile results = new readFromFile();中的行移至public void copyArray()方法。
  6. 将第二堂课中的public void copyArray()改为public void copyArray() throws IOException
  7. 在第二个类的main方法中,在代码周围放置一个try..catch块。即将(new newClass()).copyArray();更改为try { (new newClass()).copyArray(); } catch (IOException e) { e.printStackTrace(); }
  8. 之类的内容

    以上内容应该让您的工作正常工作,但一个友好的注意事项是试验代码(一旦工作),因为它是一个很好的例子来理解如何使用static关键字,如何处理或抛出异常,以及如何使用IO。 ;)