Непосредственно из этого сканера API:Нужно ли закрывать сканер, когда нет потока?
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
Это хорошая практика всегда закрывать ваши ресурсы ressources, которые вы выполняете с ними, или компилятор будет жаловаться и бормотать ошибки об утечках памяти. – hayonj