2015-12-23 2 views
1

Я новичок в Java. Я пытаюсь сделать базу данных в текстовом файле (не спрашивайте меня почему). Дело в том, что я хочу прочитать определенные строки текстового файла.Чтение определенных строк текстового файла в Java

Текстовый файл:

Salary 
3,400 
21/12/2015 
Tax Refund 
3 
22/12/2015 
Tax Refund 
320 
23/12/2015 
Savings Deposit 
1,230 
23/12/2015 
Bonus 
343 
23/12/2015 

Каждые 3 строки есть новая запись. Например, Зарплата - это категория, 3,400 - это сумма и 21/12/2015 - это дата. То, что я хочу сделать, это читать только суммы (например, 3 400 3 320 1230 и т. Д.). Единственное, что мне удалось сделать, это напечатать еще строки путем сопоставления их истинное утверждение печати, с помощью этого кода:

while(opnEsoda.hasNext()) { // diabazei kathe seira sto txt 
    // diabazei kathe seira kai emfanizei to value tis kathe mias ana 3. 
    System.out.print("You got money from: " + opnEsoda.nextLine()+ ", "); 

    System.out.print("Amount: " + opnEsoda.nextLine()+", "); 
    System.out.print("Date: " + opnEsoda.nextLine()+". ");    
    System.out.println(); 
} 

opnEsoda является сканере и печатает:

You got money from: Salary, Amount: 3,400, Date: 21/12/2015. 
You got money from: Tax Refund, Amount: 3, Date: 22/12/2015. 
You got money from: Tax Refund, Amount: 320, Date: 23/12/2015. 
You got money from: Savings Deposit, Amount: 1,230, Date: 23/12/2015. 
You got money from: Bonus, Amount: 343, Date: 23/12/2015. 
+0

чем вопрос? – sidgate

+0

@sidgate, что мне нужно сделать, чтобы печатать только суммы? (например, 3400 3 320 1230 и т. д.). –

+0

Возможный дубликат: https://stackoverflow.com/questions/16201045/java-reading-nth-line –

ответ

2

Это, на мой взгляд, немного чище, чем просто пропуск линий и позволяет иметь доступ к пропуску элементов упаковывают вам нужно их позже :)

do 
{ 
    String[] entry = new String[3]; 

    for (int i = 0; i < 3; i++) 
    { 
     if (opnEsoda.hasNextLine()) 
     { 
      // Trim removes leading or trailing whitespace. 
      entry[i] = opnEsoda.nextLine().trim(); 
     } 
    } 

    System.out.println(entry[2]); 
} 
while (opnEsoda.hasNextLine) 
+0

Спасибо. Это сработало. Следующее, что я хочу сделать, это суммировать эти цифры, взять дату каждой суммы и напечатать неделю, месяц и год. –

+0

Вы можете использовать Integer.parseInt() для преобразования значений String в целые значения. Остальное должно быть довольно легко с некоторыми хорошо размещенными операторами математики. – Hatefiend

+0

@AlexAndreadis см. [Этот вопрос] (http://stackoverflow.com/questions/999172/how-to-parse-a-date) – cadrian

2

Просто пропустить другой lines :-)

while(opnEsoda.hasNext()) { 
    // skip category 
    opnEsoda.nextLine(); 

    System.out.print("Amount: " + opnEsoda.nextLine()+", "); 

    // skip date 
    opnEsoda.nextLine(); 

    System.out.println(); 
} 
2

Вы можете использовать нижеследующий код JAVA8 и получить файл в формате списка String. Будет легко получить номер строки «n» для списка.

 int n=2; 
     List<String> fileLines = Files.readAllLines(Paths.get("c:\\abc.txt")); 
     while(n<fileLines.size()){ 
      fileLines.get(n); 
      n+=3; 
     } 
Смежные вопросы