2015-08-11 2 views
0

У меня есть программа, что я работаю на том, что я хочу сделать следующее в текстовый файлJava чтения TXT и манипулировать

  1. манипулирует следующую строку текста а # .fruit.date
  2. Изменения # ряду между 1 и 9
  3. Изменение фруктов типа фруктов, как яблоко
  4. Изменить дату на текущую дату в формате ГГГГММДД
  5. магазин строковое значение в переменную для использования в других частях программы

То, что я сейчас только кости него и ни один из мяса, как я борюсь разработать алгоритм код выглядит следующим образом

import java.io.BufferedReader; 
import java.io.FileNotFoundException; import java.io.FileReader; 

import Java.util.Scanner; 
public class Text { 
    public static void main(String [ ] args) { 
     try (Scanner s = new Scanner(new BufferedReader(new FileReader("Test.txt")))); { 
      while (s.hasNext()) { 
       System.out.println(s.next()); 
      } 
     } catch (FileNotFoundException ex) { 
      System.out.println("unable to open file"); 
     } 
    } 
} 

text.txt выглядит

abc#.fruit.date 
+0

Это выглядит как есть синтаксические ошибки, пожалуйста, перейдите по коду и исправить ошибки синтаксиса. – Sid

+0

Я мог бы просто разделить строку на #. вместо использования сканера. –

+0

Ваш вопрос непонятен, просьба указать более подробную информацию –

ответ

0

Это сделает правильные замены и распечатает результат на System.out. Все преобразованные строки текстового файла будут находиться в List<String> output.

public static void main(String args[]) { 
    String fruits[] = {"Apple", "Orange", "Banana"}; //put whatever fruit values you want in here 
    List<String> output = new ArrayList<>(); 
    try (Scanner s = new Scanner(new BufferedReader(new FileReader("Test.txt")))) { 
     while (s.hasNext()) { 
      String line = s.nextLine(); 
      line = line.replaceAll("#", String.valueOf(randomNumber(1, 9))); 
      line = line.replaceAll("fruit", fruits[randomNumber(0, fruits.length-1)]); 
      line = line.replaceAll("date", new SimpleDateFormat("YYYYMMDD").format(new Date())); 
      output.add(line); 
     } 
    } catch (FileNotFoundException ex) { 
     System.out.println("Unable to open file."); 
    } 

    for (String line : output) { 
     System.out.println(line); 
    } 
} 

private static int randomNumber(int min, int max) { 
    Random rand = new Random(); 
    return rand.nextInt((max - min) + 1) + min; 
} 

Вход:

abc#.fruit.date 

Пример вывода:

abc7.Apple.201508223 
+0

Что не так в формате DD не дает правильного номера за день – user4508513

+0

Я исправил проблему – user4508513

+0

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

0

Вам нужен String метод класса replace

и Calendar.getInstace. Затем после этого SimpleDateFormat