Занимая несколько строк текста и анализируя - PullRequest
0 голосов
/ 06 апреля 2020
 I need to break up a line of text entry into 4 parts to be analyzed.  Does anyone know how to code so I take in 4 lines of text, 40 characters per line, and analyze?  Thank you for any help on this problem.  Here is the algorithm:   Algorithm:
 *    
 *    1. User enters multiple lines of text.
 *    2. The program will read in the lines of text and display a list of all the 
 *       letters that occur in the text, with the number of times the letter occurs.
 *    3. The last line of input should be ended with a period, which serves as a 
 *       sentinel value.
 There is a for loop to get the letters of the alphabet and a for loop to record the frequency of alphabet letters in the lines of text.

       Problem description:

*
* Напишите программу, которая будет читать от пользователя несколько строк текста * и отображать список всех букв, встречающихся в тексте, а также * количество раз, когда каждая буква встречается , * * Последняя строка ввода от пользователя должна заканчиваться точкой, которая * будет служить в качестве часового значения. После того, как введена последняя строка, счетчики * для всех введенных пользователем букв должны быть перечислены в алфавитном порядке * по мере их вывода. Используйте массив базового типа int длиной 26, чтобы * каждая индексированная переменная содержала счетчик количества букв. * Индексированная переменная массива 0 содержит число a, переменная индексированная массивом * 1 содержит количество b и т. Д. Разрешить вводить как прописные, так и * строчные буквы, но обрабатывать заглавные и строчные версии * одной и той же буквы как равные. * * Подсказки: вам может быть полезно определить "вспомогательный" метод, который принимает символ * в качестве аргумента и возвращает значение int, которое является правильным индексом * для этого символа, например 'a', возвращающее 0, 'b' возвращая 1 и так далее. * Обратите внимание, что вы можете использовать Typecast, чтобы изменить символ на int, как (int) * буква. Это не даст нужное вам число, но если вы вычтете (int) * 'a', у вас будет правильный индекс. Разрешить пользователю повторять эту * задачу, пока пользователь не скажет, что он или она закончили. * * Диалог может выглядеть примерно так: * * Введите несколько строк текста для анализа. (Скопируйте и вставьте, чтобы сэкономить время.) Когда * готово, завершите строку точкой и нажмите возврат. * 1: Четыре счета и семь лет go наши предки * 2: породили на этом континенте новую нацию * 3: зачали на свободе и посвятили
* 4: утверждению, что все люди созданы равными , С уважением, Куанг Фам

import java.util.Scanner ;
/**
 *      The Letter Counter program counts the frequency of letters of the 
 * alphabet in some lines of text.  After a period and a return, the computer
 * displays the frequency.
 *
 * @author Quang Pham
 * @version Module 8, Homework Project 2, 4/1/20
 * 
 *    Algorithm:
 *    
 *    1. User enters multiple lines of text.
 *    2. The program will read in the lines of text and display a list of all the 
 *       letters that occur in the text, with the number of times the letter occurs.
 *    3. The last line of input should be ended with a period, which serves as a 
 *       sentinel value.
 *    
 *    Problem description:
 *    
 *         Write a program that will read in multiple lines of text from the user 
 *    and display a list of all the letters that occur in the text, along with the 
 *    number of times each letter occurs.
 *
 *         The last line of input from the user should end with a period, which 
 *    will serve as a sentinel value.  Once the last line has been entered, the 
 *    counts for all letters entered by the user should be listed in alphabetical 
 *    order as they are output.  Use an array of base type int of length 26, so 
 *    that each indexed variable contains the count of how many letters there are.
 *    Array indexed variable 0 contains the number of a’s, array indexed variable
 *    1 contains the number of b’s and so forth.  Allow both uppercase and 
 *    lowercase letters as input, but treat uppercase and lowercase versions of
 *    the same letter as being equal.
 *
 *    Hints: You might find it helpful to define a "helper" method that takes a 
 *    character as an argument and returns an int value that is the correct index 
 *    for that character, such as ‘a’ returning 0, ‘b’ returning 1, and so forth.
 *    Note that you can use a typecast to change a char to an int, like (int) 
 *    letter.  This will not get the number you want, but if you subtract (int)
 *    'a', you will then have the right index.  Allow the user to repeat this
 *    task until the user says she or he is finished.
 *
 *    A dialog may look something like the following
 *
 *    Enter several lines of text to analyze. (Copy and paste to save time.)  When
 *    done, end a line with a period and press return.
 *    1: Four score and seven years ago our forefathers 
 *    2: brought forth upon this continent a new nation, 
 *    3: conceived in liberty, and dedicated to the  
 *    4: proposition that all men are created equal.
 *
 *    Here's the counts of characters:
 *    a: 13
 *    b: 2
 *    c: 6
 *    d: 7
 *    e: 19
 *    f: 4
 *    g: 2
 *    h: 6
 *    i: 9
 *    l: 4
 *    m: 1
 *    n: 14
 *    o: 15
 *    p: 3
 *    q: 1
 *    r: 12
 *    s: 6
 *    t: 15
 *    u: 5
 *    v: 2
 *    w: 1
 *    y: 2
 *    
 *    JFK's inaugural quotation:  “And so, my fellow Americans: ask not what your
 *    country can do for you – ask what you can do for your country.” 
 *    
 *    MLK's Washington speech:  "I have a dream that one day this nation will rise
 *    up and live out the true meaning of its creed: “We hold these truths to be 
 *    self-evident, that all men are created equal.”" 
 *
 *         Again, you can submit a single class for this project which contains your
 *    main method and any helper methods where you feel they can be used.
 *
 *    Along with the file containing your program, submit three print screens or 
 *    screen snips, each with several lines of text entered by the user, and the 
 *    count for each character (a-z).
 */
public class LetterCounter
{
    public static void main(String[] args) {
        int frequency = 0 ;
        char character = ' ' ;
        String linesOfText = " " ;
        int letterTotal = 0 ;

        char[] alphabet = new char[26] ; //new alphabet array        
        for(char ch = 'a'; ch <= 'z'; ++ch)//fills alphabet array with the alphabet
        {
            alphabet[ch-'a']=ch ;
        } 

        System.out.println("Welcome to the Letter Count program.") ; 
        System.out.println("Please enter some lines of text followed by a period and a return.") ;
        Scanner keyboard = new Scanner(System.in) ;
        linesOfText = keyboard.nextLine() ;
        //enter linesOfText into an array and divide it into 4 lines

        if (linesOfText.contains(".")) //period sentinel is detected
                    {
                    System.out.println("Entry finished.") ;
                    }
        //letter frequency counter
        System.out.println("Letter          Frequency") ;
        for (int i = 0; i < alphabet.length; i++) 
        {   frequency = 0 ;
            for (int j = 0; j < linesOfText.length(); j++) 
            {
                character = linesOfText.charAt(j) ;
                if (character == alphabet[i]) 
                {
                    frequency++ ;               
                }
            }   
            System.out.println(alphabet[i] + "\t\t" + frequency) ;
            letterTotal += frequency ;
        }
        System.out.println("Total number of letters:  " + letterTotal + ".") ;        
    }
}

Ответы [ 4 ]

0 голосов
/ 10 апреля 2020

Это вся программа:

import java .util.Scanner; / ** * Программа Letter Counter считает частоту букв алфавита * в некоторых строках текста. После периода и возврата компьютер * отображает частоту. * * @author Quang Pham * @version Module 8, Проект домашней работы 2, 1/1/20 * * Алгоритм: *
* 1. Пользователь вводит несколько строк текста. * 2. Программа будет читать строки текста и отображать список всех * букв, встречающихся в тексте, с указанием количества встречений. * 3. Последняя строка ввода должна заканчиваться точкой, которая служит значением * Sentinel. *
* Описание проблемы: *
* Напишите программу, которая будет читать несколько строк текста от пользователя * и отображать список всех букв, которые встречаются в тексте, а также * количество раз каждый Письмо происходит. * * Последняя строка ввода от пользователя должна заканчиваться точкой, которая * будет служить в качестве часового значения. После того, как введена последняя строка, счетчики * для всех введенных пользователем букв должны быть перечислены в алфавитном порядке * по мере их вывода. Используйте массив базового типа int длиной 26, чтобы * каждая индексированная переменная содержала счетчик количества букв. * Индексированная переменная массива 0 содержит число a, переменная индексированная массивом * 1 содержит количество b и т. Д. Разрешить вводить как прописные, так и * строчные буквы, но обрабатывать заглавные и строчные версии * одной и той же буквы как равные. * * Подсказки: вам может быть полезно определить "вспомогательный" метод, который принимает символ * в качестве аргумента и возвращает значение int, которое является правильным индексом * для этого символа, например 'a', возвращающее 0, 'b' возвращая 1 и так далее. * Обратите внимание, что вы можете использовать Typecast, чтобы изменить символ на int, как (int) * буква. Это не даст нужное вам число, но если вы вычтете (int) * 'a', у вас будет правильный индекс. Разрешить пользователю повторять эту * задачу, пока пользователь не скажет, что он или она закончили. * * Диалог может выглядеть примерно так: * * Введите несколько строк текста для анализа. (Скопируйте и вставьте, чтобы сэкономить время.) Когда * готово, завершите строку точкой и нажмите возврат. * 1: Четыре счета и семь лет go наши предки * 2: породили на этом континенте новую нацию, * 3: зачали на свободе и посвятили
* 4: утверждению, что все люди созданы равными , * * Вот количество символов: * a: 13 * b: 2 * c: 6 * d: 7 * e: 19 * f: 4 * g: 2 * h: 6 * i: 9 * l: 4 * m: 1 * n: 14 * o: 15 * p: 3 * q: 1 * r: 12 * s: 6 * t: 15 * u: 5 * v: 2 * w: 1 * y: 2 *
* Инаугурационная цитата Джона Кеннеди: «Итак, мои сограждане: не спрашивайте, что ваша страна может сделать для вас, - спрашивайте, что вы можете сделать для своей страны». *
* Вашингтонская речь МЛК: «У меня есть мечта, что однажды эта нация поднимется * и воплотит в жизнь истинный смысл своей веры:« Мы считаем, что эти истины * очевидны, что все люди созданы равный. ”" * * Опять же, вы можете отправить один класс для этого проекта, который содержит ваш * main метод и любые вспомогательные методы, где вы считаете, что они могут быть использованы. * * Вместе с файлом, содержащим вашу программу, отправьте три экрана печати или * скриншоты экрана, каждый из которых содержит несколько строк текста, введенных пользователем, и количество * для каждого символа (az). * /

public class LetterCounter
{
    public static void main(String[] args)
    {
        int frequency = 0 ;
        char character = ' ' ;
        String linesOfText = " " ;
        int letterTotal = 0 ;

        char[] alphabet = new char[26] ; //new alphabet array        
        for(char ch = 'a'; ch <= 'z'; ++ch)//fills alphabet array with the alphabet
        {
            alphabet[ch-'a']=ch ;
        } 

        System.out.println("Welcome to the Letter Count program.") ; 
        System.out.println("Please enter some lines of text, a period, and a return.") ;

        Scanner keyboard = new Scanner(System.in);
        int count = 1; 
        char sentinel = '.' ;
        char sentenceChar = ' ' ;
        String entry = " " ; 

        while(sentenceChar != sentinel) //allows entry of several lines of text
        {    
            System.out.print(count + ": ");
            entry = keyboard.nextLine();
            sentenceChar = entry.charAt(entry.length()-1);
            linesOfText = linesOfText + entry.toLowerCase() ; //counts capitalized letters and concatenates
            count ++;
            if(linesOfText.contains(".")) //detects period
            {
            System.out.println("Entry finished.") ;
            break ;
            }
        }

            //letter frequency counter
            System.out.println("Letter          Frequency") ;
            for (int i = 0; i < alphabet.length; i++) 
            {   frequency = 0 ;
                for (int j = 0; j < linesOfText.length(); j++) 
                {
                    character = linesOfText.charAt(j) ;
                    if (character == alphabet[i]) 
                    {
                        frequency++ ;               
                    }
                }   
                System.out.println(alphabet[i] + "\t\t" + frequency) ;
                letterTotal += frequency ;
            }
            System.out.println("Total number of letters:  " + letterTotal + ".") ;  
            //choice = 'n' ;
        } 
    }
0 голосов
/ 08 апреля 2020

Я мог бы использовать разделитель для ввода 4 строк текста.

 Scanner keyboard = new Scanner(System.in);
        char choice = 'y';   
        while (choice == 'y')
        {
            //use of a delimiter
            keyboard.useDelimiter("\\.");  
            keyboard.useDelimiter("\\.\\n");
            linesOfText = keyboard.nextLine() ;
            keyboard.next(); 
0 голосов
/ 10 апреля 2020

Я наконец-то использовал while l oop, содержащее предложение_Char и некоторую запись, объединенную в linesOfText и точку доступа и если детектор. Вам нравится решение?

    Scanner keyboard = new Scanner(System.in);
    int count = 1; 
    char sentinel = '.' ;
    char sentenceChar = ' ' ;
    String entry = " " ; 

    while(sentenceChar != sentinel)
    {    
        System.out.print(count + ": ");
        entry = keyboard.nextLine();
        sentenceChar = entry.charAt(entry.length()-1);
        linesOfText = linesOfText + entry ;
        count ++;
        if(linesOfText.contains("."))
        {
        System.out.println("Entry finished.") ;
        break ;
        }
    }
0 голосов
/ 07 апреля 2020

Я попробовал это:

// введите linesOfText в массив и разделить его на 1-4+ строк и выведите

TextArray list = new TextArray; list.addAll (TextArray.asList (linesOfText));

System.out.println("You entered these lines of text:") ;
for (int i = 0; i < TextArray.length; i++)
{
    System.out.print((i + 1) + "." + TextArray.CharAt(0 - 40) ) ;
} 
...