我需要为进入2个字符串的学校制作程序 - 其中一个包含一个句子而另一个包含一个单词。程序应该搜索单词在句子中出现的次数。我做了这样的程序(下面的代码)并且它正在工作,但老师拒绝接受这种方式。她希望我让它与“命令行”一起工作,因为我是一个初学者,我不明白这是怎么回事。很想得到代码的帮助......
import java.util.Scanner;
class Search{
public static void main(String args[])
{
String text;
String word;
int found=0;
Scanner in = new Scanner(System.in);
System.out.println("Sentence: ");
text= in.nextLine();
System.out.println("Word: ");
word=in.nextLine();
for (int i = -1; (i = text.indexOf(word, i + 1)) != -1; )
{
found++;
}
System.out.println("The word was found "+found+" times!");
}
}
答案 0 :(得分:3)
laiello说的是对的!
String text = args[0];
String word = args[1];
并且在执行程序时执行:
java Search "this is the sentence containing words" "words"
答案 1 :(得分:2)
您可以保持大部分代码相同。只需使用字符串声明进行简单的调整:
String text = args[0];
String word = args[1];
这假设您先输入句子,然后输入您要搜索的单词。您使用命令行运行程序时,main中的args
数组包含您输入的任何参数。
答案 2 :(得分:1)
我相信老师正在寻找的是能够像这样运行你的程序:
java -cp . Search "The quick brown fox jumps over the lazy dog." "the"
您的程序将使用args
数组来获取句子和单词的值,而不是用户必须在提示符下键入每个值。
答案 3 :(得分:1)
在这里使用命令行可能意味着程序一次接受来自命令行的参数。这就是你运行程序的方式
java Search "fox" "The fox jumped"
在这种情况下,fox作为args [0]传递,句子作为args [1]传递。然后,您在代码中需要的唯一更改是用args [1]替换文本,用args [0]替换word。只需确保传递参数的顺序与代码中的处理顺序相匹配。
答案 4 :(得分:0)
args是一个数组,您可以在其中找到用户在命令行中输入的字符串!您可以像普通数组一样使用它。
例如: 使用args [0],您将获得命令行的第一个单词。
答案 5 :(得分:0)
只是为此添加另一个想法,你实际上并不需要一个循环。
int diff = text.replaceAll(word, "").length();
int numberOfWords = (text.length() - diff) / word.length();
System.out.println("The number of times " + word + " appears in the text is " + numberOfWords);
这更有效,因为只有一个String
操作。其他一切都是基本的算术。只是值得思考的东西!
这是工作在IDEOne。