Member 13710451 Ответов: 2

Как я могу решить эту проблему на java


Реализуйте программу, которая подсчитывает количество однобуквенных слов в текстовом файле.

Ваша программа должна ввести имя текстового файла и напечатать номер файла.
однобуквенные слова в этом файле. Имя файла-это строка, длина которой составляет от 1 до 60.
Файл содержит от 1 до 1000 строк, каждая из которых имеет длину от 1 до 60 символов.
Символы в файле включают буквы, пробелы и разрывы строк. В файле нет цифр
или знаки препинания, и он также не включает пустые строки. Однобуквенное слово в этом файле
может быть буква, окруженная пробелами; буква в начале строки, за которой следует пробел;
буква в конце строки, перед которой стоит пробел; или однобуквенная строка. Другими словами, это письмо
рядом с ним нет другой буквы


пример:мы r инопланетяне
Мы говорим на странном языке
Мы дружелюбны
Ответ: 3

Что я уже пробовал:

ackage test;

import java.io.*;

public class Test {
    public static void main(String [] args) {

        // The name of the file to open.
        String fileName = "temp.txt";

        // This will reference one line at a time
        
        String line = null;

        try {
            // FileReader reads text files in the default encoding.
            FileReader fileReader = 
                new FileReader(fileName);

            // Always wrap FileReader in BufferedReader.
            BufferedReader bufferedReader = 
                new BufferedReader(fileReader);

            while((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }   

            // Always close files.
            bufferedReader.close();         
        }
        catch(FileNotFoundException ex) {
            System.out.println(
                "Unable to open file '" + 
                fileName + "'");                
        }
        catch(IOException ex) {
            System.out.println(
                "Error reading file '" 
                + fileName + "'");                  
            
        }
    }
}

wseng

в чем твоя проблема ?

Member 13710451

код для указания одной буквы в этом предложении

Patrice T

А у вас есть вопрос ?

Member 13710451

код для одной буквы

Richard MacCutchan

Вы забыли добавить код, который ищет однобуквенные маркеры.

Member 13710451

я понятия не имею, какой код использовать

Richard MacCutchan

Смотрите Решение ниже.

Member 13710451

// Имя файла, который нужно открыть.
Строковое имя файла = "temp.txt";

// Это будет ссылаться на одну строку за раз

Строки = "мы инопланетяне р\п" +"говорить на непонятном языке\п" + "мы Р-фрэндли";
String delims = "[ ]+";
String[] tokens = phrase.split(delims);
пробовать {
// FileReader считывает текстовые файлы в кодировке по умолчанию.
FileReader fileReader =
новый FileReader(имя файла);

// Всегда оборачивайте FileReader в BufferedReader.
Командой bufferedreader командой bufferedreader =
новый BufferedReader(fileReader);

// в то время как((строка = командой bufferedreader.с readline()) != нуль) {
// System.out.println(строка);
for (int i = 0; i < токены.длина; i++)
Системы.из.код println(маркеры[я]);
// }

// Всегда закрывайте файлы.
командой bufferedreader.рядом();
}
поймать(исключение filenotfoundexception экс) {
Системы.из.код println(
"Невозможно открыть файл" +
имя файла + "'");
}
catch(IOException ex) {
Системы.из.код println(
"Ошибка чтения файла '"
+ имя файла + "'");
// Или мы могли бы просто сделать это:
// ex.printStackTrace();
}
}
}

у меня произошла ошибка

2 Ответов

Рейтинг:
2

Richard MacCutchan

Подумайте о том, что вам нужно сделать, чтобы распознать токены, которые вы ищете. Сначала разделите строку на отдельные токены, см. Строка (Java Platform SE 7 )[^] для методов, которые помогут. Затем выясните, сколько символов в каждом токене, снова посмотрите на класс string. Наконец, подсчитайте число, которое содержит только одну букву.


Member 13710451

// Имя файла, который нужно открыть.
Строковое имя файла = "temp.txt";

// Это будет ссылаться на одну строку за раз

Строки = "мы инопланетяне р\п" +"говорить на непонятном языке\п" + "мы Р-фрэндли";
String delims = "[ ]+";
String[] tokens = phrase.split(delims);
пробовать {
// FileReader считывает текстовые файлы в кодировке по умолчанию.
FileReader fileReader =
новый FileReader(имя файла);

// Всегда оборачивайте FileReader в BufferedReader.
Командой bufferedreader командой bufferedreader =
новый BufferedReader(fileReader);

// в то время как((строка = командой bufferedreader.с readline()) != нуль) {
// System.out.println(строка);
for (int i = 0; i < токены.длина; i++)
Системы.из.код println(маркеры[я]);
// }

// Всегда закрывайте файлы.
командой bufferedreader.рядом();
}
поймать(исключение filenotfoundexception экс) {
Системы.из.код println(
"Невозможно открыть файл" +
имя файла + "'");
}
catch(IOException ex) {
Системы.из.код println(
"Ошибка чтения файла '"
+ имя файла + "'");
// Или мы могли бы просто сделать это:
// ex.printStackTrace();
}
}
}

у меня произошла ошибка

Richard MacCutchan


String line = "We r aliens\n" +"We talk in a strange language\n" + "We r friendly";
String delims = "[ ]+";
String[] tokens = phrase.split(delims);

Зачем вы это делаете, если должны считывать входные данные из текстового файла? И почему вы используете эти разделители, когда строки разделены пробелом и символами новой строки? И почему вы используете имя переменной phrase который нигде не существует?

Не стоит просто писать случайные строки кода и надеяться, что что-то сработает. Остановитесь и подумайте о шагах, которые вы должны предпринять, чтобы решить свою проблему. Запишите шаги на вашем естественном языке и пройдите через него, чтобы увидеть, что это имеет смысл. Только после этого вы должны преобразовать эти шаги в реальные строки кода.

Рейтинг:
2

CPallini

Чтение одного символа за раз с помощью простой государственной машины сделает свое дело.


Member 13710451

понятия не иметь

CPallini

Отсутствие идей-очень плохая отправная точка для разработчика (вы можете подумать о карьере в управлении проектами).