rafiur rahman rafit Ответов: 2

Как разделить строку из файла на две строки массива?


Я хочу разделить строку из файла на две строки массива......

файл содержит это-


Бангладеш= 109,408

Индия= 92,7478

Пакистан= 200.550

США= 1.29221

Европа= 1.16989

УК= 1

КСА= 4,85180

Австралия= 1.90035

Канада= 1,71097




Выход есть-

Str[0]:Бангладеш

Str[1]: 109.408

Str[0]:Индия

Str[1]: 92.7478

Str[0]:Пакистан

Str[1]: 200.550

Str[0]:США

Str[1]: 1.29221

но я хочу получить такой результат-

Str[1]:Бангладеш

Str[2]: 109.408

Str[3]:Индия

Str[4]: 92.7478

Str[5]:Пакистан

Str[6]: 200.550

Str[7]:США

Str[8]: 1.29221


ОПЕРАЦИОННАЯ

Str[1]:Бангладеш

Str[2]:Индия

Str[3]:Пакистан

Str[4]:США

Str1 выглядит следующим образом[1]: 109.408

Str1 выглядит следующим образом[2]: 92.7478

Str1[3]: 200.550

Str1 выглядит следующим образом[4]: 1.29221
0

Что я уже пробовал:

public class Reversewhileloop {
    /**
    * @param args the command line arguments
    * @throws java.io.FileNotFoundException
    */
    
    public static void main(String[] args) throws FileNotFoundException, IOException {
        try
        {
            BufferedReader in = new BufferedReader(new FileReader(new File("Untitled Document 1.txt")));
            System.out.println("File open successful!");
            int line = 0;
            String[] tempArray;
            for (String x = in.readLine(); x != null; x = in.readLine())
            {
                line++;
                String[] tokens = x.split("=");
                for (int i = 0; i < tokens.length; i++) {
                    System.out.println("Str[" + i + "]:" + tokens[i]);
                }
            }
        } catch (IOException e)
        {
            System.out.println("File I/O error!");
        }
    }
}

2 Ответов

Рейтинг:
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> для более эффективного и ремонтопригодного кода.

Maciej Los

5ed!