2011-03-22 92 views
1

我想開始說我是新人,需要幫助。如何編寫識別以下語言的單詞的方法

提示: 寫一個方法,公共靜態布爾語言(串詞),從下面的語言識別的單詞:

{ a^n | n is a prime number } 

如果輸入「字」是從語言的方法返回真假。

測試實例:

Input: aaa  true 
Input: aaaaaaaa false 
Input: aaaaaaa true 
Input: a false 
Input: aba false 

我所欣賞的幫助和時間。

編輯:

好了,所以我當時就使用isPrime極其混亂,什麼輸入,但在這一點上,我在isPrime(串詞)和編譯給了我在「布爾F = isPrime錯誤( word.length())「不能應用於(int)。

import java.io.*; 
import java.util.*; 

public class Homework_2F_2 

{ 

public static void main(String args[]) 

{ 

Scanner keyboard = new Scanner(System.in); 

System.out.print("Enter a word from language \"A\" "); 

String word = keyboard.nextLine(); 

boolean D = isTrue(word); 

if(D == false) 
System.out.println("This word is not part of the language"); 

boolean F = isPrime(word.length()); 

if(F == true && D == true) 
System.out.println("This word is part of the language"); 
} 

//Check for language Method 
public static boolean isTrue(String word) 
{ 
if(word.length() == 1) 
return false; 

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

{ 
if(word.charAt(i) != 'a') 
return false; 
} 

return true; 
} 


//Method to find if word is prime 
public static boolean isPrime(String n) 

{ 

} 

} 

回答

4

我不確定你的具體問題是什麼,但是你可能首先檢查輸入字符串的長度,看它是否爲素數。 (請參閱http://en.wikipedia.org/wiki/Primality_test)然後,檢查字符串中的每個字符是否都是'a'。

+0

燁,很簡單(+1) – 2011-03-22 07:23:09

-2

你去那裏...

public static boolean Language(String word) 
{ 
    if(word == null) 
    { 
     return false; 
    } 

    for(char c : word.toCharArray()) 
    { 
     if(c != 'a') 
     { 
      return false; 
     } 
    } 

    int len = word.length(); 

    if(len == 0 || len == 1) 
    { 
     return false; 
    } 

    for(int i = 2; i <= len - 1; i++) 
    { 
     if(len % i == 0) 
     { 
      return false; 
     } 
    } 

    return true; 
} 
+0

以上是最基本的方法......你可以做一些優化。 ..like而不是有兩個循環嘗試管理一個將做字符檢查和主要檢查... – 2011-03-22 08:05:01

+0

@Downvoter ...照顧評論downvote ... ??? – 2011-03-22 08:28:35

+3

-1獲得完整答案。這是一個家庭作業問題,學生不會通過複製你的作品來學習任何東西。 – philosodad 2011-03-22 08:28:56

1

如果你打破的問題分解成較小的它會爲你容易。鑑於您需要執行以下任務的輸入:

  • 從輸入
  • 檢查每個字獲取所有的話,如果它屬於語言

更具體地說:

  • 獲取輸入(通過函數參數)
  • 使用空格作爲分隔符分割輸入
  • 爲每個單詞:
    • 檢查它是否只包含字母'a';如果不是,則返回假
    • 計算字符數
    • 檢查字符數是否爲prime number;如果不是,返回false
  • 如果你的函數走到今天這一步,返回true