Поиск символов в наборе строк - PullRequest
0 голосов
/ 21 апреля 2020

Я создал эту программу, где вы можете ввести строку, и она запишет ее и отобразит пользователю количество символов в этой строке и количество введенных строк. Например, если пользователь вводит текст «Sally» в текстовое поле и нажимает кнопку, он скажет:

Число строк: 1

Количество символов: 5

И пользователь может ввести больше строк, если они захотят, например, «Алекс», и это изменит число от 1 строки до 2 и количество символов до 9

В любом случае, я хочу, чтобы это было так второе текстовое поле, в котором пользователь может ввести несколько символов и выполнить поиск этих символов, чтобы увидеть, сколько строк, введенных пользователем ранее, содержит символы, найденные пользователем

Вот пример того, что он должен делать : Поэтому, если пользователь вводит: «Салли», «Джек» и «Такса», программа должна прочитать обратно, говоря, что есть 3 строки и 20 символов.

Теперь, если пользователь вводит «a c» «В поле поиска программа скажет:« Число строк с символом «c» равно 2 (в строках «Джек и такса» содержится «a c»)

Вот мой код для всего запрограммировать, если я Помощь выше приводила в замешательство

Мне просто нужна помощь о том, как кодировать деталь для поиска определенных c символов в этих строках

Я знаю, что есть что-то, называемое get.contains (), но я попытался реализовать это, и у меня возникли проблемы с ним

import javax.swing.*;
import java.awt.event.*;

public class good{
StringSet sSet;
JTextField inputStr;
JLabel numStr;
JLabel numChar;
JTextField inputStr2;
JLabel numofStr;

good() {

sSet=new StringSet();

JFrame f= new JFrame("StringSetYetAgain");
JLabel en=new JLabel("Enter a String:");
en.setBounds(50, 10, 100, 100);

numStr=new JLabel("Number of Strings: 0");
numStr.setBounds(50, 160, 400, 100);

numChar=new JLabel("Number of Characters: 0");
numChar.setBounds(50, 180, 400, 100);

inputStr=new JTextField();
inputStr.setBounds(50, 80, 400, 50);

JButton pushMe=new JButton("Push to include String");
pushMe.setBounds(50, 140, 400, 50);

JLabel enter=new JLabel("String to search for:");
enter.setBounds(50, 230, 400, 100);

inputStr2=new JTextField();
inputStr2.setBounds(50, 300, 400, 50);

JButton pushMe2=new JButton("Search");
pushMe2.setBounds(50, 360, 400, 50);

numofStr=new JLabel("Number of strings with: 0");
numofStr.setBounds(50, 405, 400, 50);


pushMe.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){
    String s=inputStr.getText();
    sSet.add(s);

    String ns=numStr.getText();
    ns=ns.substring(0, ns.length() - 1)+sSet.size();
    numStr.setText(ns);

    String nc=numChar.getText();
    nc=nc.substring(0, nc.length() - 1)+sSet.numChars();
    numChar.setText(nc);
    inputStr.setText("");
}
});

//I would add the code for the search part here

f.add(en);
f.add(inputStr);
f.add(pushMe);
f.add(numStr);
f.add(numChar);
f.add(enter);
f.add(inputStr2);
f.add(pushMe2);
f.add(numofStr);
f.setSize(550,600);
f.setLayout(null);
f.setVisible(true);

}

public static void main(String[] args) {
new good();

    }

}

Вот исходный код для класса StringSet

public class StringSet {

private String[] arr;
private int count;

public StringSet() {
    arr = new String[200];
    count = 0;
}

void add(String newStr){
    arr[count++] = newStr;
}

int size(){
    return count;
}

int numChars(){
    int total = 0;
    for(int i = 0; i < count; ++i){
        total += arr[i].length();
    }
    return total;
}

int countStrings(int len){
    int total = 0;
    for(int i = 0; i < count; ++i){
        if(arr[i].length() == len)
            ++total;
    }
    return total;
    }

}

Вот часть, до сих пор для поиска символов

pushMe2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

    public int countOf(String substring, StringSet sSet) {
        int counter = 0;

      for (int i = 0; i < sSet.size(); i++)
           if (sSet.get(i).contains(substring))
               counter++;

      return counter;

    }
    }
});

1 Ответ

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

Добавьте это, где вы сказали

Я бы добавил код для поисковой части здесь

buttonThatShouldCount.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        int counter = 0;
        String substring = inputStr2.getText();

        for (int i = 0; i < sSet.size(); i++)
            if (sSet.get(i).contains(substring))
                counter++;

        inputStr2.setText("The substring \"" + substring "\" occurs " + count + " times.");
    }
}

Вам также необходимо добавить следующий метод в ваш StringSet класс:

public String get(int index) {
    return arr[index];
}

Нам нужно сделать это, потому что иначе нет никакого доступа к строкам, хранящимся в наборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...