2011-03-21 95 views
1

林卡住以下问题,复制数组值到另一个

我有两类,第一是readFromFile和所述第二类是的NewClass

readFromFile的.java -

  • 这读取一个文本文件
  • 解析文本行成单独的字符串
  • 在v这些字符串的alues存储在一个String []所谓dArray
  • 为了测试我打印的所有值出来,它的工作原理

的NewClass的.java

  • 这类旨在将字符串[] dArray的值复制到一个新字符串中,并从那里使用值(用于简化孵化城所有我已经列入的NewClass是与复制阵列)的代码
  • 我在做什么错,是我要回dArray但其返回存储在它没有一个数组,所以我要么需要一种方法来调用readFromFile.class /帮助主要方法创造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(); 
    } 
} 

回答

1

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

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的main方法中,名为“readFromFile”。你需要一个接受一个字符串数组作为参数的newClass方法。或者接受一个字符串数组的构造函数。

请确保它们都没有主要方法或它不会工作。

+0

Doesn#t在readFromFile中的getArray()方法接受一个字符串数组,只有问题是当我称它它没有值导致字符串[]值在主要方法中分配? – skal 2011-03-21 21:33:33

+0

我只是说他们不能同时拥有主要方法。 Java不能这样工作,只有你实际运行的程序可以有一个主要的方法,否则你必须有构造函数和方法 – Loogawa 2011-03-21 21:39:55

+0

好吧,我得到你,所以例如,如果我使用你发布的例子,我需要将公共无效copyArray更改为其他内容,并在括号中包含Strin [],或者我想这完全是错误的,谢谢你的帮助 – skal 2011-03-21 21:46:54

0
  1. 在一流的dArray变量
  2. 更改public static void main(String[] args) throws IOException之前取出static关键字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. 把try..catch块在你的代码在第二类的主要方法。即改变(new newClass()).copyArray();为类似try { (new newClass()).copyArray(); } catch (IOException e) { e.printStackTrace(); }

上面应该把你的东西的工作,而是一个友好的调子将与代码试验(一旦它的工作原理),因为它是一个很好的例子就明白了static关键字是如何使用的,如何处理或抛出异常以及如何使用IO。 ;)

+0

问题是: 1.你的'dArray'变量是静态的。这意味着只有一个数组实例会被创建并在第一个类的所有实例之间共享。 2.你的第一个类有一个'public static void main()',而不是一个构造函数。这是一个问题,因为只有从命令行运行第一个类时,才会调用main()方法,但不这样做。你在调用构造函数。 3.'newClass.copyArray()'是一个语法错误,它只是不起作用。 'copyArray()'是一个普通的方法(没有static关键字),因此只能从类的实例中调用。 – domspawn 2011-03-21 21:22:21

+0

当我按照你所说'fileScan = new Scanner(new File(“C:\\ stuff.txt”));'给出了一个错误,说它必须被捕获或声明为抛出。 ive试图抛出IOException,这只会导致相同的错误,而不是第三行的newClass'readFromFile results = new readFromFile();'如果有人可以帮助,我将不胜感激,谢谢 – skal 2011-03-21 21:28:31

+0

我已经更新了答案,以包括修复案例,为您失败。 – domspawn 2011-03-22 12:09:08

相关问题