簡體   English   中英

將數組值從一個類復制到另一個

[英]copying array values from one class to another

我陷入了以下問題,

我有兩個類,第一個是readFromFile,第二個是newClass

readFromFile .java-

  • 這讀取一個文本文件
  • 將文本行解析為單獨的字符串
  • 這些字符串的值存儲在名為dArray的String []中
  • 為了進行測試,我已經打印了所有值,並且可以正常工作

newClass .java

  • 此類旨在將字符串[] dArray的值復制到新字符串中,並從那里使用這些值(為簡單起見,我在newClass中包含的所有內容都是與復制數組有關的代碼)
  • 我做錯的是我要返回dArray但返回的數組中沒有存儲任何內容,因此我要么需要一種方法來從readFromFile.class調用main方法,要么需要在readFromFile中創建一個方法來實現相同的目的我從主打來的

請幫忙

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

結果生成在readFromFile.main()中,但是您希望在readFromFile()中調用它。 您需要為readFromFile創建一個構造函數,並在您的main方法中調用它。

問題在於兩個類都有一個main方法。 僅您要運行的類應具有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中的方法,該方法接受字符串數組作為參數。 或接受字符串數組的構造函數。

確保它們都不具有主要方法,否則將不起作用。

  1. dArray變量之前刪除static關鍵字
  2. public static void main(String[] args) throws IOException更改為第一個類中的public readFromFile() throws IOException 保持其中的代碼相同。
  3. 更改行newClass.copyArray(); 在您的第二個類中(new newClass()).copyArray();
  4. 在第二個類中移動該行readFromFile results = new readFromFile(); 進入public void copyArray()方法。
  5. 更改public void copyArray()在你的第二類public void copyArray() throws IOException
  6. 在第二個類的main方法中,在代碼周圍放置try..catch塊。 即更改(new newClass()).copyArray(); try { (new newClass()).copyArray(); } catch (IOException e) { e.printStackTrace(); } try { (new newClass()).copyArray(); } catch (IOException e) { e.printStackTrace(); }

上面的代碼可以使您的工作正常運行,但是一個友好的注釋是可以嘗試代碼(一旦工作),因為這是一個很好的示例,可以了解如何使用static關鍵字,如何處理或引發異常以及如何使用IO。 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM