Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.ArrayList;
- import java.util.List;
- public class MyScanner {
- private BufferedReader br;
- private String lastLine;
- private List<String> lastWords;
- private int pos;
- public MyScanner(InputStream s) {
- br = new BufferedReader(new InputStreamReader(s));
- init();
- }
- public MyScanner(String s) {
- br = new BufferedReader(new StringReader(s));
- init();
- }
- public MyScanner(File f) {
- try {
- br = new BufferedReader(new FileReader(f));
- init();
- } catch (FileNotFoundException e) {
- System.out.println("File does not exist" + e.getMessage());
- }
- }
- private void init() {
- lastWords = new ArrayList<>();
- pos = 0;
- }
- public boolean hasNextLine() {
- try {
- lastLine = br.readLine();
- } catch (IOException e) {
- System.out.println("Error");
- } finally {
- return lastLine != null;
- }
- }
- public String nextLine() {
- return lastLine;
- }
- public boolean hasNextWord() {
- if(pos == lastWords.size()) {
- if(hasNextLine()) {
- lastWords = splitWords(nextLine());
- pos = 0;
- }
- }
- return pos < lastWords.size();
- }
- public String nextWord() {
- String ret = lastWords.get(pos);
- pos++;
- return ret;
- }
- private static List<String> splitWords(String s) {
- final String DASH = "\u2E40-֊־᐀᠆‐‑‒–—―⸗⸚⸺⸻〜〰゠︱︲﹘﹣-'";
- List<String> list = new ArrayList<>();
- int left = 0;
- for (int i = 0; i < s.length(); ++i) {
- char sym = s.charAt(i);
- if (!Character.isLetter(sym) && DASH.indexOf(sym) == -1) {
- if (left < i) {
- list.add(s.substring(left, i));
- }
- left = i + 1;
- }
- }
- if (left < s.length()) {
- list.add(s.substring(left, s.length()));
- }
- return list;
- }
- public void close() {
- try {
- br.close();
- } catch (IOException e) {
- System.out.println("Error");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement