Спасайте, помогайте и далее по тексту :-D. Реально -месяца 2 уже бьюсь-никак!
В чем сейчас проблема: строка, читаемая из файла (world,world,world,world,world) видится как (��w o r l d , w o r l d , w o r l d , w o r l d , w o r l d ) - то есть с пробелами. Почему так-черт его знает...Первые 2 символа это я уже понял, что BOM-символы...Но вот почему строка с пробелами видится...Причем даже после
goal.replaceAll(" ","" ); -я реально уже голову сломал...У меня все время выводит ноль. "Нету говорит у тебя слов world в файле. И слов w o r l d -тоже нету. И вообще-иди нафиг" :-))))))))
Если кто поможет советом-буду рад...Иначе придется сдаться и пропустить задачу...А не хотелось бы:-(
UPD. Корректно работающий код вставил ниже. Но все равно не проходит...Пишет: "Убедись, что программа выводит только одно целое число, и никаких лишних надписей."
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s1 = reader.readLine();
reader.close();
String example = "world";
String Checker = ":;-.,!?; ";
int WorldsCounter = 0;
ArrayList<Integer> list = new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
FileReader fileReader = new FileReader(s1);
while (fileReader.ready()) //пока есть непрочитанные байты в потоке ввода
{
char charr = (char) fileReader.read();
stringBuilder.append(charr);
}
fileReader.close();
String goal = stringBuilder.toString();
// получаем положения всех знаков препинания, кот.разделяют слова
for (int i=0; i<goal.length(); i++)
{
String temp = goal.substring(i,i+1);
if (Checker.contains(temp))
{
list.add(i);
}
}
//теперь парсим слова, находящиеся в промежутках между знаками препинания
for (int i=0; i<list.size();i++)
{
if (i==0)
{
String temp = goal.substring((list.get(i)-5),list.get(i));
if (temp.equals(example))
{
WorldsCounter = WorldsCounter+1;
}
}
else
{
String temp = goal.substring(list.get(i)+1,list.get(i)+6);
if (temp.equals(example))
{
WorldsCounter = WorldsCounter+1;
}
}
}
System.out.print(WorldsCounter);
}
}package com.javarush.task.task19.task1907;
/*
Считаем слово
*/
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s1 = reader.readLine();
reader.close();
String example = "world";
String probel = " ";
String Checker = ":;-.,!?; ";
int WorldsCounter = 0;
ArrayList<Integer> list = new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
FileReader fileReader = new FileReader(s1);
while (fileReader.ready()) //пока есть непрочитанные байты в потоке ввода
{
char charr = (char) fileReader.read();
stringBuilder.append(charr);
}
fileReader.close();
String goal = stringBuilder.toString();//после того, как все символы получены-
// переводим в обычную строку
String goal2 = goal.replaceAll(" ","" ); // это потому, что
// у меня world почему то видится как w o r l d
// получаем положения всех знаков препинания, кот.разделяют слова
for (int i=0; i<goal.length(); i++)
{
String temp = goal.substring(i,i+1);
if (Checker.contains(temp))
{
list.add(i);
}
}
//теперь парсим слова, находящиеся в промежутках между знаками препинания
for (int i=0; i<list.size();i++)
{
if (i==0)
{
String temp = goal.substring((list.get(i)-10),list.get(i));
System.out.println(temp);//это просто себя проверить-то ли выводит
System.out.println(goal2);//это просто себя проверить-то ли выводит
if (temp.equals(example))
{
WorldsCounter = WorldsCounter+1;
}
}
else
{
String temp = goal.substring(list.get(i),(list.get(i)+1));
if (temp.equals(example))
{
WorldsCounter = WorldsCounter+1;
}
}
}
System.out.println(WorldsCounter);
}
}