用java语言编写命令行程序

用java语言编写命令行程序,java,Java,我需要为学校制作一个输入两个字符串的程序——一个包含一个句子,另一个包含一个单词。程序应该搜索单词在句子中出现的次数。我是这样做的(下面的代码),它的工作,但老师拒绝接受这种方式。她想让我用“命令行”来工作,因为我是一个乞丐,我不明白这将如何工作。希望能在代码方面得到一些帮助 import java.util.Scanner; class Search{ public static void main(String args[]) { String text; Stri

我需要为学校制作一个输入两个字符串的程序——一个包含一个句子,另一个包含一个单词。程序应该搜索单词在句子中出现的次数。我是这样做的(下面的代码),它的工作,但老师拒绝接受这种方式。她想让我用“命令行”来工作,因为我是一个乞丐,我不明白这将如何工作。希望能在代码方面得到一些帮助

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!");
    }
}

您可以保持大部分代码不变。只需使用字符串声明进行以下简单调整:

String text = args[0];
String word = args[1];

这是假设您先键入句子,然后键入要搜索的单词。main中的
args
数组保存使用命令行运行程序时输入的任何参数。

args是一个数组,您可以在其中找到用户在命令行中输入的字符串!可以像普通数组一样使用它

例如:
使用args[0]您可以获得命令行的第一个单词。

我相信您的老师想要的是能够像这样运行您的程序:

java -cp . Search "The quick brown fox jumps over the lazy dog." "the"

您的程序将使用
args
数组获取句子和单词的值,而不是用户必须在提示下键入每个值。

laiello说的是正确的

String text = args[0];
String word = args[1];
在执行程序时,您需要:

java Search "this is the sentence containing words" "words"

只是为了给它添加另一个想法,你实际上不需要一个循环

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);
因为只有一个
字符串
操作,所以这更有效。其他一切都是基本的算术。只是一些值得思考的事情


在这里,使用命令行可能意味着程序一次性接受命令行的参数。这就是你运行程序的方式

java Search "fox" "The fox jumped"

在这种情况下,fox作为args[0]传递,句子作为args[1]传递。那么代码中唯一需要的更改就是用args[1]替换文本,用args[0]替换word。只需确保传递参数的顺序与代码中的处理顺序相匹配。

您是否要求老师澄清?他们说了什么?String[]args是您将在引号中的句子中使用的变量(“类似于此的东西”),然后它是一个命令行参数。