Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. public class MyScanner {
  6. private BufferedReader br;
  7. private String lastLine;
  8. private List<String> lastWords;
  9. private int pos;
  10.  
  11. public MyScanner(InputStream s) {
  12. br = new BufferedReader(new InputStreamReader(s));
  13. init();
  14. }
  15. public MyScanner(String s) {
  16. br = new BufferedReader(new StringReader(s));
  17. init();
  18. }
  19. public MyScanner(File f) {
  20. try {
  21. br = new BufferedReader(new FileReader(f));
  22. init();
  23. } catch (FileNotFoundException e) {
  24. System.out.println("File does not exist" + e.getMessage());
  25. }
  26. }
  27.  
  28. private void init() {
  29. lastWords = new ArrayList<>();
  30. pos = 0;
  31. }
  32.  
  33. public boolean hasNextLine() {
  34. try {
  35. lastLine = br.readLine();
  36. } catch (IOException e) {
  37. System.out.println("Error");
  38. } finally {
  39. return lastLine != null;
  40. }
  41. }
  42. public String nextLine() {
  43. return lastLine;
  44. }
  45. public boolean hasNextWord() {
  46. if(pos == lastWords.size()) {
  47. if(hasNextLine()) {
  48. lastWords = splitWords(nextLine());
  49. pos = 0;
  50. }
  51. }
  52. return pos < lastWords.size();
  53. }
  54. public String nextWord() {
  55. String ret = lastWords.get(pos);
  56. pos++;
  57. return ret;
  58. }
  59.  
  60. private static List<String> splitWords(String s) {
  61. final String DASH = "\u2E40-֊־᐀᠆‐‑‒–—―⸗⸚⸺⸻〜〰゠︱︲﹘﹣-'";
  62.  
  63. List<String> list = new ArrayList<>();
  64. int left = 0;
  65. for (int i = 0; i < s.length(); ++i) {
  66. char sym = s.charAt(i);
  67. if (!Character.isLetter(sym) && DASH.indexOf(sym) == -1) {
  68. if (left < i) {
  69. list.add(s.substring(left, i));
  70. }
  71. left = i + 1;
  72. }
  73. }
  74.  
  75. if (left < s.length()) {
  76. list.add(s.substring(left, s.length()));
  77. }
  78. return list;
  79. }
  80.  
  81. public void close() {
  82. try {
  83. br.close();
  84. } catch (IOException e) {
  85. System.out.println("Error");
  86. }
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement