2017-03-18 48 views
-1

我有一個程序,需要輸入字母,然後總結每個字母的數字值。從不同的類靜態調用布爾方法

我有它,所以如果我輸入「abc」,我的輸出是「6」。

我忽略大寫字母,所以如果我輸入「abC」,我的輸出是「3」。

現在我想要做的是在一個單獨的類中創建一個方法,如果設置爲true,它將按原樣運行我的主程序,但當它設置爲false時,它會將大寫字母視爲小寫字母,輸入「abC」,輸出「6」。

我希望這是有道理的,我已經嘗試了幾個不同的東西,但他們都按原樣運行程序,忽略大寫字母。

這是我的代碼,我很欣賞任何建設性的反饋。

感謝

編輯:我還希望,如果你沒有downvote我要問一個問題,如果你不想幫不」,似乎每一個問題,我問得到downvoted沒有明顯的或公平原因。因爲我知道這會發生,所以我不想要求幫助。我們都開始不得不在某個地方!

主要方法:

Scanner scan = new Scanner(System.in); 

    System.out.println("\nPlease enter the letters you would like to use:"); 

    String s, t = ""; 

    scan.next(); 

    s = scan.next(); 

    boolean b = Converter.caseSensitive(false, s); 

    scan.close(); 

    for (int i = 0; i < s.length(); i++) { 
     char ch = s.charAt(i); 

     if (!t.isEmpty()) { 
      t += ","; 
     } 


     if (ch >= 'a' && ch <= 'z') { 
      int n = ch - 'a' + 1; 
      t += String.valueOf(n); 
     } 
    } 

在單獨的類方法二:

public class Converter { 

public static boolean caseSensitive(Boolean b, String s) { 

    for (char c : s.toCharArray()) { 
     if (Character.isLetter(c) && Character.isLowerCase(c)) { 
      b = s.equalsIgnoreCase(s); 
      return false; 
     } 
    } 

    s = s.toLowerCase(); 
    return true; 
} 
} 
+0

可否請你從不必要的行清潔你的代碼? –

+1

爲什麼不把所有的代碼從main()移動到pass(布爾選項)等其他函數,然後替換爲 boolean b = StringConverter.caseSensitive(false,s);與 boolean b = StringConverter.caseSensitive(option,s);並呼叫通過(true);通過(假);從新主力? –

+0

我實際上在這裏看不到問題。請澄清你在哪裏有問題。 –

回答

1

我相信你的問題是「我怎麼記錄在一個類中的靜態布爾值,然後從另一個請求它類?」

public class Configuration { 
    private static boolean convertToUppercase = true; 

    public static void setConvertToUppercase(boolean convert) { 
     convertToUppercase = convert; 
    } 

    public static boolean getConvertToUppercase() { 
     return convertToUppercase; 
    } 
} 

這可以作爲:

注意,大多數程序員(包括我)會考慮這個可憐的設計,但解釋爲什麼是你的問題的範圍之外。

您的代碼還有很多其他問題。例如,上面的方法調用將使輸入字符串保持不變。但是,我建議你在遇到困難時只用相關的代碼問另一個問題。

+0

我相信你是對的。感謝您的建議,我知道我的代碼遠非優雅,我只是開始如此,現在,如果它的工作,我很高興。我會嘗試一些更多的想法,看看我如何繼續,我感謝你的幫助。 – Keeron

1

字符串在Java中是不可變的。請閱讀下面的計算器問題有關此主題的更多信息: String is immutable. What exactly is the meaning?

public static void main(String[] args) throws Exception 
{ 
    String test = "abc"; 
    toUpperCase(test); 
    System.out.println(test); 
} 

private static void toUpperCase(String test) 
{ 
    test = test.toUpperCase(); 
} 

請注意,上面的代碼將輸出:

ABC

爲了有 「ABC」 爲結果您需要使用以下代碼:

public static void main(String[] args) throws Exception 
{ 
    String test = "abc"; 
    test = toUpperCase(test); 
    System.out.println(test); 
} 

private static String toUpperCase(String test) 
{ 
    return test.toUpperCase(); 
} 

這一個輸出:

ABC

所以你Converter.caseSensitive方法應該返回字符串

+0

感謝JCasso的反饋,給了我一個我將要嘗試的想法。 – Keeron

1

我不認爲你真的需要Converter類。您可以刪除類和替換行:

boolean b = Converter.caseSensitive(false, s);

與此

boolean shouldCountUppercaseLetters = false; 

if (shouldCountUppercaseLetters) { 
    s = s.toLowerCase(); 
} 
+0

嗨安德里,我絕對不需要它,我只是想看看如何使用它可以完成。我能說什麼,我喜歡讓自己變得笨拙:) – Keeron