Импорт ArrayList из одного файла в другой - PullRequest
0 голосов
/ 04 марта 2012

мой вопрос довольно простой, но я не могу найти никакой реальной помощи в вопросах, которые задавали другие люди ... их код слишком сложен.

По сути, я создал ArrayList в одномJava-файл, и я пытаюсь импортировать его в другой Java-файл.Я могу это сделать?Или мне просто нужно перестроить мой второй файл?

Заранее спасибо!

Это файл, который создал ohnode:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;


public class trimgroup {


public static void main(String[] args) throws IOException, StringIndexOutOfBoundsException, NumberFormatException{
Scanner scan = new Scanner(new File("VspAircraft_calculix_geom.dat"));
Scanner scan1 = new Scanner(new File("VspAircraft_calculix_geom.dat"));  
Scanner scan2 = new Scanner(new File("VspAircraft_calculix_geom.dat"));
FileWriter file = new FileWriter(new File("trimgroup.dat"));



double ymax=0;
double ymin1=0;
double ymin=0;
double ymineq=0;
double xmax=0;
double xmin1=0;
double xmin=0;
double xmineq=0;
double ymaxb=0;
double ymin1b=0;
double yminb=0;
double ymineqb=0;
double xmaxb=0;
double xmin1b=0;
double xminb=0;
double xmineqb=0;


ArrayList<Double> a = new ArrayList<Double>(); //y values of all the nodes
ArrayList<Double> b = new ArrayList<Double>(); //x values of all the nodes
ArrayList<Integer> node = new ArrayList<Integer>(); //all the nodes on the wing
ArrayList<Integer> nodeb = new ArrayList<Integer>();
ArrayList<Integer> ohnode = new ArrayList<Integer>();



//Front Spar
while(scan.hasNextLine()){
 String line = scan.nextLine();
 String [] token = line.split("[,|\\r?\\n]");

 if (token.length==2){

     for(int i=0;i<token[1].length()-11;i++) {

        if (token[1].substring(i,i+12).equals(" NSET=Nspar1")){
        line=scan.nextLine();      // first skip any input that matches the delimiter pattern, and then attempt to return the next token

            while(scan.hasNextLine()){

            String [] token2= line.split("[,|\\r?\\n]");

                if (token2[0].equals("")){
                    break;
                }else{
                    String [] token3= line.split("[,|\\r?\\n]");
                    double token2d=Double.parseDouble(token3[2]);
                    double token1d=Double.parseDouble(token3[1]);
                    int token0d=Integer.parseInt(token3[0]);
                    a.add(token2d);
                    node.add(token0d);
                    //Find the max/min
                        if (token2d>ymax){
                            ymax=Double.parseDouble(token3[2]);

                        }else{
                        ymin1=Double.parseDouble(token3[2]);}

                        if (1/ymin1>ymineq){
                            ymin=token2d;
                            ymineq=1/token2d;}

                        if (token1d>xmax){
                            xmax=Double.parseDouble(token3[1]);

                        }else{
                            xmin1=Double.parseDouble(token3[1]);}

                        if (1/xmin1>xmineq){
                            xmin=token1d;
                            xmineq=1/token1d;}

                            line=scan.nextLine();               
                }
            } 
        }    
    }
  }
}
//Back Spar
while(scan1.hasNextLine()){
 String line = scan1.nextLine();
 String [] token = line.split("[,|\\r?\\n]");
  if (token.length==2){

     for(int i=0;i<token[1].length()-11;i++) {

        if (token[1].substring(i,i+12).equals(" NSET=Nspar2")){
        line=scan1.nextLine();       

            while(scan1.hasNextLine()){

            String [] token2= line.split("[,|\\r?\\n]");

                if (token2[0].equals("")){
                    break;
                }else{
                    String [] token3= line.split("[,|\\r?\\n]");
                    double token2d=Double.parseDouble(token3[2]);
                    double token1d=Double.parseDouble(token3[1]);
                    int token0d=Integer.parseInt(token3[0]);
                    a.add(token2d);
                    node.add(token0d);
                        if (token2d>ymaxb){
                            ymaxb=Double.parseDouble(token3[2]);

                        }else{
                        ymin1b=Double.parseDouble(token3[2]);}

                        if (1/ymin1b>ymineqb){
                            yminb=token2d;
                            ymineqb=1/token2d;}

                        if (token1d>xmaxb){
                            xmaxb=Double.parseDouble(token3[1]);

                        }else{
                            xmin1b=Double.parseDouble(token3[1]);}

                        if (1/xmin1b>xmineqb){
                            xminb=token1d;
                            xmineqb=1/token1d;}

                            line=scan1.nextLine();               
                }
            } 
        }    
    }
  }
}

while(scan2.hasNextLine()){
 String line2 = scan2.nextLine();
 String [] token2 = line2.split("[,|\\r?\\n]");

 if (token2.length==2){

  if (token2[1].equals(" NSET=Nupperskin")){
    line2=scan2.nextLine();
    while (scan2.hasNextLine()){
    String [] token2b = line2.split("[,|\\r?\\n]");
    if (token2b[0].equals("")){
     break;
    }else{
        String [] token3b = line2.split("[,|\\r?\\n]");
        int token2bi=Integer.parseInt(token3b[0]);
        double token2by=Double.parseDouble(token3b[2]);
        double token2bx=Double.parseDouble(token3b[1]);
        if (token2bx<(xmax-xmin)/(ymax-ymin)*token2by+xmin){
            ohnode.add(token2bi);
        }
        if (token2bx>(xmaxb-xminb)/(ymaxb-yminb)*token2by+xminb){
            ohnode.add(token2bi);
        }

     line2=scan2.nextLine();
     }
    }
   }
 }
 if (token2.length==2){

  if (token2[1].equals(" NSET=Nlowerskin")){
    line2=scan2.nextLine();
    while (scan2.hasNextLine()){
    String [] token2b = line2.split("[,|\\r?\\n]");
    if (token2b[0].equals("")){
     break;
    }else{
        String [] token3b = line2.split("[,|\\r?\\n]");
        int token2bi=Integer.parseInt(token3b[0]);
        double token2by=Double.parseDouble(token3b[2]);
        double token2bx=Double.parseDouble(token3b[1]);
        if (token2bx<(xmax-xmin)/(ymax-ymin)*token2by+xmin){
            ohnode.add(token2bi);
        }
        if (token2bx>(xmaxb-xminb)/(ymaxb-yminb)*token2by+xminb){
            ohnode.add(token2bi);
        }

     line2=scan2.nextLine();
     }
    }
   }
 }     
}

System.out.println(nodeb.size());  
System.out.println(node.size());
System.out.println(ohnode.size());
 for (int u=0;u<ohnode.size();u++)
  file.write(ohnode.get(u)+"\r\n");


file.close();   

}}

Это текстовый файлЯ пытаюсь использовать Arraylist ohnode в:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.List;


public class TrimBox {
public static void main(String[] args) throws IOException, StringIndexOutOfBoundsException, NumberFormatException{
    Scanner scan = new Scanner(new File("VspAircraft_calculix_geom.dat"));
    Scanner scan2 = new Scanner(new File("trimgroup.dat"));  
    FileWriter file = new FileWriter(new File("trimbox_nodes.dat"));

    ArrayList<Integer> node = new ArrayList<Integer>(); 
//ALL the nodes of the entire wing

    while (scan.hasNextLine()){
        String line = scan.nextLine();
        String [] token= line.split(",|\\r?\\n]");

        if (token.length==2){
            for(int i=0;i<token[1].length()-11;i++) {
                if (token[1].substring(i,i+12).equals(" NSET=Nspar0")){
                    //Ask user to change the number after Nspar in modelcenter to denote which spar to apply load

                    line=scan.nextLine();
                    while(scan.hasNextLine()){
                        String [] token2= line.split("[,|\\r?\\n]");
                        if (token2[0].equals("")){
                            break;
                        }else{
                            String [] token3= line.split("[,|\\r?\\n]");
                            //System.out.println(token3[2]);
                            int token0d=Integer.parseInt(token3[0]);
                            node.add(token0d); //Add the node tokens to array node

                            //Order of the tokens from VSPAircraft_calculix_geom.data
                            //node, x value, y value, z value
                 }
             }
         }
     }
 }

}
}
}
/** We want to import the arraylist from trimgroup.dat (nodeb or ohnode?)
 * Can we also import arraylist node from trimgroup.dat?
 * -If nodes from VSP==nodeb (/ohnode?), skip, if not, add token to new array
 * -Write it to a new file
 * 
 * Probably can use some function of java.util.ArrayList to see if ArrayLists are equal
 * 
 * Why do we have ArrayLists instead of Arrays?  
 */

1 Ответ

1 голос
/ 04 марта 2012

Трудно сказать по вашему вопросу, что вы пытаетесь сделать, поэтому я сделаю некоторые предположения.

Если вы хотите передать ArrayList от одного объекта к другому, есть несколько способов сделать это., но это зависит от того, какой объект вы хотите «отвечать» за передачу.


1) Объект A может создать объект B и передать ArrayList в конструкторе:

new A(myArrayList);

2) , если оба объекта уже существуют, объект A может вызвать метод установки в объекте B:

B.setList(myArrayList);

Это предполагает, чтоA имеет ссылку на B, и вы создали метод установки в B!Установка таких объектов не обязательно является хорошим проектом, но это другой вопрос.


3) объект B может получить объект из A с помощью метода получателя (или получить к нему прямой доступ,в зависимости от того, виден ли он, например, public или private):

ArrayList myList = A.getList();

ArrayList myList = A.myArrayList;

Опять же, это предполагает, что B имеет ссылку на A, и, в первом случае, вы создалиметод получения в A!


Наконец, обратите внимание, что import имеет особое значение в Java - см. Импорт в верхней части только что опубликованного кода, например:

import java.util.ArrayList;

Импорт класса ArrayList отличается от передачи фактических экземпляров ArrayList из одного объекта или класса в другой.


Обновление : теперь, когда вы опубликовали свой код - см. Комментарии от Судно на воздушной подушке, полное угрей .В основном у вас есть два отдельных скрипта, которые не предназначены для одновременной работы в одной и той же JVM.Поэтому они не могут передавать ArrayList между собой, если они не записывают его в общий файл или не передают его по сети, а это совсем другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...