gpt4 book ai didi

java - 查找句子中的任何单词

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:19 25 4
gpt4 key购买 nike

第一篇文章等等。我是一名新手程序员。

无论如何,我的任务是用 Java 创建一个程序,该程序将以句子和单词的形式接收用户输入。该程序从句子中删除空格,并检查该单词是否出现在“无空格”句子中。但是,该程序还会从单词的末尾删除一个字母,并检查 那个 单词是否出现在无空格的句子中。该程序继续从单词中删除字母,直到没有更多的字母可以删除。

此外,该程序还应该说明单词的位置,但它不能多次列出一个位置。如果程序找不到整个单词,它会打印出“'Word' was not found”。如果是,它会打印出“'Word' was found at location 'x'”

例如如果我的句子是“She sings by the river”并且单词是“byte”,代码应该检查“shesingsbytheriver”中的“byte”、“byt”、“by”和“b”,但它找不到“byt”、“by”和“b”在同一位置。

下面是我的代码。在我的 if 语句之前一切都很好。它没有在没有空白的句子中找到单词,而是继续打印出“‘Word’ was not found”。

最后几点说明:我应该避免使用数组,而且我需要的大部分命令都在 String 类中。

谢谢!

// The purpose of this program is to take in user input in the form
// of a sentence and a word. The program repeats the sentence and word
// back, removes the spaces, and checks if the word was present in the
// sentence. The program removes a letter from the word, checks if that
// "word" is present and continues until it cannot remove any more letters.

import java.util.*;
import javax.swing.JOptionPane;

public class Program1 {

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

String sentence = JOptionPane.showInputDialog("Please enter a sentence: ");
String word = JOptionPane.showInputDialog("Please enter a word: ");

sentenceBlankless = sentence.replaceAll(" ", "");

JOptionPane.showMessageDialog(null, "The original imput is: " + sentence);
JOptionPane.showMessageDialog(null, "Removing blanks - " + sentenceBlankless);
JOptionPane.showMessageDialog(null, "Input word - " + word);

for (int x = 0; x < word.length(); x++) {

if (sentenceBlankless.toLowerCase().contains(word.toLowerCase())) {
int loc = sentence.toLowerCase().indexOf(word.toLowerCase());
JOptionPane.showMessageDialog(null, word.substring(0, word.length() - x) + " was found at location " + loc);
} else {
JOptionPane.showMessageDialog(null, word.substring(0, word.length() - x) + " was not found");
}
}
}
}

最佳答案

你的问题是它总是搜索是否找到了“byte”,而不是字节的子串。

这发生在这条线上

if (sentenceBlankless.toLowerCase().contains(word.toLowerCase())) {

您总是使用 word,它始终是“byte”,它永远不会更新。

所以你可以把它替换成

if (sentenceBlankless.toLowerCase().contains(word.substring(0, word.length() - x).toLowerCase()))

但我不推荐它。而是尝试在 for 循环的每次迭代中更新单词。

所以你可以这样做:

word = word.substring(0, word.length() - x);

您的最终 for 循环将是:

for (int x = 0; x < word.length(); x++)
{
word = word.substring(0, word.length() - x);
if (sentenceBlankless.toLowerCase().contains(word.toLowerCase()))
{
int loc = sentenceBlankless.toLowerCase().indexOf(word.toLowerCase());
JOptionPane.showMessageDialog(null, word + " was found at location " + loc);
}
else
JOptionPane.showMessageDialog(null, word + " was not found");

}

其他一切都可以保持不变。

题外话:

在 if 语句中 loc 使用 sentence 而不是 sentenceBlankless 来获取位置。

关于java - 查找句子中的任何单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com