Mam plik o takiej strukturze:
(1,2)
(2,5)
.
.
.
I chcę sobie wczytać te int i do 2 zmiennej int po przecinku ale nie mam pojęcia w jaki sposób pominąć nawias i przecinek
Mam plik o takiej strukturze:
(1,2)
(2,5)
.
.
.
I chcę sobie wczytać te int i do 2 zmiennej int po przecinku ale nie mam pojęcia w jaki sposób pominąć nawias i przecinek
Wczytanie pliku:
Możesz skorzystać z klasy użytkowej java.nio.file.Files.
Przyda Ci się zapewne jedna z metod:
Parsowanie pliku
Na początek - zajrzyj tu: java.lang.String - Javadoc.
Możesz też skorzystać z tego: java.util.regex.Pattern.
Ja generalnie polecam wykorzystanie java.nio.file.Files.lines(java.nio.file.Path) (wczytuje strumieniowo - doczytując kolejne linie w miarę potrzeby), stworzenie metody parsującej z wykorzystaniem np. java.util.regex.Pattern, którą sobie przekażesz jako argument do funkcji java.utl.stream.Stream.map(java.util.Function).
Wczytywanie pliku mam do Scannera, z tym nie mam problemu, później robię
Scanner s = new Scanner(new File("dane.txt"));
while(s.hasNextLine()) {
}
tylko pytanie jak pominąć te niepotrzebne symbole
Wykorzystaj to, o czym napisałem, pomijając etap wczytywania pliku - tj. punkt Parsowanie pliku.
Generalnie, z metod klasy String
możesz popatrzeć na indexOf()
, lastIndexOf()
, substring()
, replace()
, replaceAll()
, transform()
.
Jeśli chodzi o klasę Pattern
, to możesz najpierw poczytać o wyrażeniach regularnych - Vogella: Java Regular Expressions, Oracle: Regular Expressions.
Ja bym wybrał wyrażenia regularne, bo łatwiej byłoby mi to zapisać, ale jeśli lepiej będziesz się czuł z substring()
czy replace()
, to nie ma sensu, żebyś teraz się rzucał na RegExy.
Spójrz na to z innej strony: zamiast coś pomijać, wskaż co konkretnie chcesz znaleźć
Scanner scanner = new Scanner(new File(path));
String line;
int a, b, x;
while (scanner.hasNextLine()) {
line = scanner.nextLine();
x = line.indexOf(",");
a = Integer.valueOf(line.substring(1, x));
b = Integer.valueOf(line.substring(x + 1, line.length() - 1));
System.out.println(String.format("%d %d", a, b));
}
Nie wytłumaczę jak działa ten kod, niech autor trochę ruszy mózgownicą.
Dzięki ale zrozumienie tego kodu nie jest ciężkie XD