2014-11-03 89 views
0

我需要爲進入2個字符串的學校編寫程序 - 其中一個包含一個句子,另一個包含一個單詞。該程序應該搜索該單詞在句子中存在多少次。我做了這樣的程序(下面的代碼),它的工作,但老師拒絕接受這種方式。她希望我能使它與「命令行」一起工作,並且因爲我是一個先行者,我不明白這將如何工作。希望對代碼有一些幫助...在java中使用命令行編程

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

你問過你的老師澄清?他們說了什麼? – 2014-11-03 17:23:30

+1

String [] args是你將要使用的變量 – LeatherFace 2014-11-03 17:23:32

+0

用引號輸入句子(「像這樣的東西。」),然後它是一個命令行參數。 – 2014-11-03 17:26:16

回答

2

您可以保留大部分代碼相同。只是讓這個簡單的調整你的字符串聲明:

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

這是假設你鍵入的第一句話之後,你搜索的單詞。當你使用命令行運行程序時,主體中的args數組將保存您輸入的任何參數。

0

args是一個數組,您可以在該數組中找到用戶在命令行中輸入的字符串!你可以像普通數組一樣使用它。

例如: 使用args [0],您會看到命令行的第一個單詞。

1

我相信你的老師正在尋找的是運行您的程序是這樣的能力:

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

你的程序將使用args陣列來獲得句子和值的字,而不是用戶的必須在提示符下輸入每個字符。

+0

明白了!謝謝! :) – Monster 2014-11-03 17:32:57

3

laiello說的是正確的!

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

和執行你的程序的時候:

java Search "this is the sentence containing words" "words" 
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工作。

1

在這裏使用命令行可能意味着程序一次接受來自命令行的參數。這是你將如何運行程序

java Search "fox" "The fox jumped" 

在這種情況下狐狸ARGS傳遞[0]和句子爲ARGS傳遞的[1]。然後,只需在代碼中用args [1]替換文本,並用args [0]替換單詞即可。只要確保傳遞參數的順序與代碼中的處理順序相匹配即可。