Не могу найти проблему
Добавлено: 04 апр 2012, 18:40
Добрый день.
Не могу понять в чем причина вылета приложения с ошибкой.
Смысл в том что на входе идет переменная String вида:
где:
буква-указатель типа
следующие за ней 3 цифры-код, такой же как в файле с ценами(по нему и нужно искать цену)
после дефиса - количество(всегда целое)
Файл расценок имеет следующий вид:
В возвращаемом значении нужно вывести сумму вычислений количество*цена для всех кодов
Подскажите, пожалуйста, что я делаю не так, где возникает ошибка и как ее исправить.
P.S. Прошу прощения за "быдлокодинг", это первая моя программа. Даже Еклипс пишет мне что у меня хардкод.
Не могу понять в чем причина вылета приложения с ошибкой.
Смысл в том что на входе идет переменная String вида:
Код: Выделить всё
s003-12
n176-137
p573-9
...буква-указатель типа
следующие за ней 3 цифры-код, такой же как в файле с ценами(по нему и нужно искать цену)
после дефиса - количество(всегда целое)
Файл расценок имеет следующий вид:
Код: Выделить всё
001-0.15
002-11.09
...
999-185.60В возвращаемом значении нужно вывести сумму вычислений количество*цена для всех кодов
Код: Выделить всё
public String Stoimost(String stNar) {
float stoim = 0;
Hashtable<String, Float> Price = new Hashtable<String, Float>();
Hashtable<String, Integer> CurNar = new Hashtable<String, Integer>();
// StringBuffer priceText = new StringBuffer();
String PriceFilePath = DirPath + "price.dat";
File priceF = new File(DirPath, "price.dat");
if (!priceF.exists()) {
stoim = 0;
Toast.makeText(getApplicationContext(),
"Ошибка: файл " + PriceFilePath + " не найден",
Toast.LENGTH_LONG).show();
} else {
try {
FileReader fRd = new FileReader(priceF);
BufferedReader reader = new BufferedReader(fRd);
String str;
while ((str = reader.readLine()) != null) {
// priceText.append(str + "\n");
String[] tmp = str.split("-");
Price.put(tmp[0], Float.valueOf(tmp[1]));
}
fRd.close();
} catch (Throwable t) {
Toast.makeText(getApplicationContext(),
"Exception: " + t.toString(), Toast.LENGTH_LONG).show();
}
}
String[] stringLine = stNar.split("\n");
for (int i = 0; i < stringLine.length; i++) {
String[] tmp = stringLine[i].split(" - ");
String cod=tmp[0].substring(1);
float mod =0;
if (tmp[0].substring(0, 1)=="s") {
mod=(float) 1.2;
} else {
mod=1;
}
stoim = stoim + (Float.valueOf(tmp[1]) * Price.get(tmp[0])*mod);
}
String stout=String.valueOf(stoim);
return stout;
}
P.S. Прошу прощения за "быдлокодинг", это первая моя программа. Даже Еклипс пишет мне что у меня хардкод.