السلام عليكم
لدي سؤال وقد حاولت جاهدا لكنني لم اجد سبب منطقي لا من قريب ولا من بعيد للخطأ الذي أحصل عليه ولذلك ارجو المساعدة
في البداية طبعا انا اريد التحويل من مصفوفة string الى مصفوفة int فقد كنت أقوم بذلك عن طريق (Integer.parseInt(s وكمثال لما اعنيه المثال التالي:
int [] integer = new int [4];
String [] string = {"2", "3", "4", "9"};
for (int i = 0; i < integer.length; i++)
{
integer = Integer.parseInt(string);
System.out.println(integer);
}الآن المشكلة التي لدي هي كالتالي
لدي ملف اكسل واريد القراءة منه وتخزين محتوياته في مصفوفة من نوع int وعند المباشرة بذلك طهر ت لي رسالة الخطأ التالي
لذلك لجأت الى حيلة وهي ان اقوم بقرآة الملف وتخزين المحتويات في مصفوفة من النوع String وقد نجحت بذلك وظهرت لي النتيجة كما اريدها والكود كما هو
import javax.swing.JOptionPane;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class NEHT {
/**
* @param args
*/
private String inputFile;
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
public void read() throws IOException {
File inputWorkbook = new File(inputFile);
Workbook w;
try {
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
//---------------------------read from XML and store in array----------------------------------//
int x = sheet.getRows()-1; // Machines_numbers
int y = sheet.getColumns()-1; // Jobs_numbers
// we subtracted 1 from rows and coulumns because the first row and column is test
String[][] array = new String[x][y]; //processing time for every product on every machine
String output = ""; // Accumulate text here (should be StringBuilder).
//... Print array in rectangular form using nested for loops.
for (int i = 1; i < sheet.getRows(); i++) {
for (int j = 1; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
array[i-1][j-1] = cell.getContents();
output += " " + array[i-1][j-1];
}
output += "\n";
}
JOptionPane.showMessageDialog(null, "The input is " + "\n" + output,
"F" + (sheet.getRows()-1) + "|Sijk, prmu|Cmax", JOptionPane.INFORMATION_MESSAGE);
}
catch (BiffException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
NEHT read = new NEHT();
read.setInputFile("c:/temp/test1.xls"); // مكان تخزين الملف المطلوب قرائته
read.read();
System.exit(0);
}عند هذه النقطة وكل شي تمام لكن وبما ان الهدفهو الحصول على مصفوفة من النوع int فقد قررت ان احول من String الى int كما عملت في الكود الاول
وكان الكود الجديد بعد التعديل عليه كما يلي:
import javax.swing.JOptionPane;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class NEHT {
/**
* @param args
*/
private String inputFile;
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
public void read() throws IOException {
File inputWorkbook = new File(inputFile);
Workbook w;
try {
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
//---------------------------read from XML and store in array----------------------------------//
int x = sheet.getRows()-1; // Machines_numbers
int y = sheet.getColumns()-1; // Jobs_numbers
// we subtracted 1 from rows and coulumns because the first row and column is test
String[][] array = new String[x][y]; //processing time for every product on every machine
int[][] arr = new int[x][y]; //هنا اضنا المصفوفة الجديدة من النوع انتجر
String output = ""; // Accumulate text here (should be StringBuilder).
//... Print array in rectangular form using nested for loops.
for (int i = 1; i < sheet.getRows(); i++) {
for (int j = 1; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
array[i-1][j-1] = cell.getContents();
arr[i-1][j-1] = Integer.parseInt(array[i-1][j-1]);// هنا قمت بعملية التحويل بين الصنفين
output += " " + arr[i-1][j-1]; // أريد طباعة المصفوفة الجديدة
}
output += "\n";
}
JOptionPane.showMessageDialog(null, "The input is " + "\n" + output,
"F" + (sheet.getRows()-1) + "|Sijk, prmu|Cmax", JOptionPane.INFORMATION_MESSAGE);
}
catch (BiffException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
NEHT read = new NEHT();
read.setInputFile("c:/temp/test1.xls"); // مكان تخزين الملف المطلوب قرائته
read.read();
System.exit(0);
}لكن لكي اتفاجئ واحصل على نفس الخطا الذي كنت احصل عليه كلما تخزين القراءات في الملف داخل المصفوفة من النوع int
لا اعرف سبب الخطا الذي يبدو غير منطقي بالمرة لا من قريب ولا من بعيد
فيا ريت يا شباب اللي بيقدر يساعدني بكون له من الشاكرين لانه الموضوع مهم جدا واريد ان اكمل مشروعي
الملف الذي أخذت القراءات منه بالمرفقات
عفوا على الاطالة