Hi
hope you can help me with this as i've already been using too much time solving it myself :)
I got a Board class which have an ArrayList<ArrayList<Integer>> as attribute. The Board class is controlled from my service class. I need to create a lot of boards which all needs different ArrayList<ArrayList<Integer>> input, so i made a for loop which creates the Boards. The problem is however when i change the variable i used to create the object the values also change inside the object even though the create method have already been called. English isn't my native language so it's a bit hard to explain :) Please ask if there's something you don't understand.
thanks in advance!
I made a temporary solution by making a 3d arraylist so i won't have to overwrite any values but thats not rly a good solution as it's starting to give me problems elsewhere.
the method that creates the boards is Service.importCSV()
model.Board
package model;
import java.util.ArrayList;
public class Board {
private String controleNumber;
private ArrayList<ArrayList<Integer>> numbers = new ArrayList<ArrayList<Integer>>();
private ArrayList<ArrayList<Integer>> remainingNumbers = new ArrayList<ArrayList<Integer>>();
public Board(String controlenumber, ArrayList<ArrayList<Integer>> numbers) {
this.controleNumber = controlenumber;
this.numbers = numbers;
this.remainingNumbers = numbers;
}
public String getControlenumber() {
return controleNumber;
}
public void setControlenumber(String controleNumber) {
this.controleNumber = controleNumber;
}
public ArrayList<ArrayList<Integer>> getNumbers() {
return numbers;
}
public void setNumbers(ArrayList<ArrayList<Integer>> numbers) {
this.numbers = numbers;
}
public void setRemainingNumbers(ArrayList<ArrayList<Integer>> remainingNumbers) {
this.remainingNumbers = remainingNumbers;
}
public ArrayList<ArrayList<Integer>> getRemainingNumbers() {
return remainingNumbers;
}
public String toString() {
return String.valueOf(controleNumber);
}
}
service.Service
package service;
import gui.MainFrame;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import ramdao.BoardDao;
import model.Board;
public class Service {
private static ArrayList<Integer> numbers = new ArrayList<Integer>();
public static List<Board> getAllBoards() {
return BoardDao.getAllBoards();
}
public static Board createBoard(String controleNumber, ArrayList<ArrayList<Integer>> numbers) {
Board board = new Board(controleNumber, numbers);
BoardDao.store(board);
return board;
}
public static void deleteBoard(Board board) {
BoardDao.remove(board);
}
public static Board checkFor(int checkFor) {
for(Board board : getAllBoards()) {
System.out.println(board.getRemainingNumbers());
for(ArrayList<Integer> row : board.getRemainingNumbers()) {
for(int i=0;i<row.size();i++) {
if(numbers.contains(row.get(i))) {
row.remove(row.get(i));
}
}
}
if(checkFor==1) {
for(ArrayList<Integer> row : board.getRemainingNumbers()) {
if(row.size()==0) {
return board;
}
}
}
else if(checkFor==2) {
if(board.getRemainingNumbers().get(0).size()==0 && board.getRemainingNumbers().get(1).size()==0) {
return board;
}
else if(board.getRemainingNumbers().get(0).size()==0 && board.getRemainingNumbers().get(2).size()==0) {
return board;
}
else if(board.getRemainingNumbers().get(1).size()==0 && board.getRemainingNumbers().get(2).size()==0) {
return board;
}
}
else if(checkFor==3) {
if(board.getRemainingNumbers().size()==0) {
return board;
}
}
System.out.println(board.getRemainingNumbers() );
}
return null;
}
public static ArrayList<Integer> oneToGo(int rows, ArrayList<Integer> numbers) {
//TO-DO
return null;
}
public static void importCSV(ArrayList<String> buff) {
ArrayList<ArrayList<ArrayList<Integer>>> allNumbers = new ArrayList<ArrayList<ArrayList<Integer>>>();
int line = 0;
String controleNumber = "";
String[] splitLine = new String[10];
for(int i=0;i<buff.size();i++) {
//adds the split buff to splitLine
for(int q=0;q<buff.get(i).split(";").length;q++) {
if(buff.get(i).split(";")[q].equals(""))
splitLine[q]="0";
else
splitLine[q]=buff.get(i).split(";")[q];
}
if(line==0) {
allNumbers.add(new ArrayList<ArrayList<Integer>>());
ArrayList<Integer> row = new ArrayList<Integer>();
allNumbers.get(allNumbers.size()-1).add(row);
controleNumber=buff.get(i).split(";")[0];
for(int q=buff.get(i).split(";").length;q<10;q++) {
splitLine[q]="0";
}
for(int q=0;q<9;q++) {
row.add(Integer.valueOf(splitLine[q+1]));
}
}
else if(line==1) {
ArrayList<Integer> row = new ArrayList<Integer>();
allNumbers.get(allNumbers.size()-1).add(row);
for(int q=buff.get(i).split(";").length;q<9;q++) {
splitLine[q]="0";
}
for(int q=0;q<9;q++) {
row.add(Integer.valueOf(splitLine[q]));
}
}
else if(line==2) {
ArrayList<Integer> row = new ArrayList<Integer>();
allNumbers.get(allNumbers.size()-1).add(row);
for(int q=buff.get(i).split(";").length;q<9;q++) {
splitLine[q]="0";
}
for(int q=0;q<9;q++) {
row.add(Integer.valueOf(splitLine[q]));
}
createBoard(controleNumber, allNumbers.get(allNumbers.size()-1));
line=-1;
}
line++;
}
}
public static ArrayList<String> readFile(File file) {
FileInputStream fileInputStream = null;
ArrayList<String> buff = new ArrayList<String>();
String line;
try {
fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));
while ((line = bufferedReader.readLine())!= null) {
buff.add(line);
}
}
catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
finally {
try {
fileInputStream.close();
}
catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
return buff;
}
public static void addNumber(int number) {
numbers.add(number);
}
public static ArrayList<Integer> getNumbers() {
return numbers;
}
}