Рейтинг:
5
Maciej Los
Я бы посоветовал использовать список ArrayList[^] таможни класс[^]. Видеть:
public class MyData {
String Country;
Double Currency;
public MyData(String _Country, Double _Currency){
this.Country = _Country;
this.Currency = _Currency;
}
public MyData(String _Country, String _Currency){
this.Country = _Country;
this.Currency = Double.parseDouble(_Currency);
}
}
Использование:
File file = new File("D:\\JavaData.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
ArrayList<MyData> mdlist = new ArrayList<MyData>();
String line;
while ((line = br.readLine()) != null) {
String[] parts = line.split("=");
MyData md = new MyData(parts[0], parts[1]);
mdlist.add(md);
}
br.close();
Double sum = 0.0;
for(MyData md : mdlist){
sum += md.Currency;
System.out.printf("%s | %f | total: %f%n", md.Country, md.Currency, sum);
}
Рейтинг:
16
Richard MacCutchan
Попробуйте сделать это в цикле, где вы читаете строки текста:
String[] tokens = x.split("=");
line++;
System.out.println("Str[" + line + "]:" + tokens[0]);
line++;
System.out.println("Str[" + line + "]:" + tokens[1]);
rafiur rahman rafit
Спасибо @Richard MacCutchan. Но я хочу поместить эти строковые значения в массив токенов вот так.
токены[0] содержат Бангладеш
токены[1] содержат 109,85
токены[2] содержат США
токены[3]содержат 1,36
до токенов[i]
потому что я хочу использовать строковое значение массива для вычисления
Richard MacCutchan
Что ж, вот к чему должно привести мое предложение; вы пробовали?
rafiur rahman rafit
спасибо.
да, и я узнаю решение этой проблемы после того, как вы дадите этот код. Но все же я столкнулся с другой проблемой. вы можете мне помочь?
rafiur rahman rafit
частный недействительными convertActionPerformed(Ява.авт.событие.ActionEvent evt) {
{
if(from.getSelectedIndex()==0 || second.getSelectedIndex()==0 ||
third.getSelectedIndex()==0 || fourth.getSelectedIndex()==0
||fromtext.getText().equals(""))
JOptionPane.showMessageDialog(null,"вы должны выбрать по крайней мере две валюты .Один из них (из коробки), а другой из других 4 коробок","Акуна Матата",
JOptionPane.ИНФОРМАЦИОННОЕ СООБЩЕНИЕ);
пробовать
{
Командой bufferedreader в = читает(новый FileReader(новый файл("документ без названия 1.txt")));
System.out.println("файл открыт успешно!");
int line = 0;
double[] tempArray2 = новый double[300];
String[] tempArray = новая строка[300];
пробовать {
for (String x = in.readLine(); x != null; x = in.readLine())
{
String[] tokens = x.split("=");
линия++;
tempArray[line] = токены[0];
линия++;
tempArray2[line] = Double.parseDouble(токены[1]);
}
} catch (IOException ex) {
Регистратор.getLogger(currencyconver.класс.метод getname()).журнал(уровень.Тяжелый, нулевой, бывший);
}
двойной amountchange = двойной.parseDouble(fromtext.с текстом());
двойной amountpound =0.0;
переключатель(от.getSelectedItem().метод toString()){
кейс "USA": amountpound=amountchange/ tempArray2[8];
перерыв;
случай "Бангладеш": amountpound=amountchange/tempArray2[2];
перерыв;
кейс "Индия": amountpound=amountchange/tempArray2[4];
перерыв;
кейс "Пакистан": amountpound=amountchange/tempArray2[6];
перерыв;
кейс "Европа": amountpound=amountchange/tempArray2[10];
перерыв;
Когда я его запускаю........... это не работает...... это tempArray2[i] не имел значения...........или что-то еще
Richard MacCutchan
Вы увеличиваете переменную line
дважды, а не только один раз, так как теперь вы используете два отдельных массива. Таким образом, ваш код должен быть:
for (String x = in.readLine(); x != null; x = in.readLine())
{
String[] tokens = x.split("=");
line++;
tempArray[line] = tokens[0];
tempArray2[line] = Double.parseDouble(tokens[1]);
}
Однако использование жестко закодированных индексов для поиска значений не является хорошим способом написания кода. Вы должны использовать класс коллекции, такой как a
Dictionary<TKey, TValue>
для более эффективного и ремонтопригодного кода.