2015-11-01 86 views
2

我試圖總結不同的字符串的ASCII值,同時秉承了以下說明:如何打印從重載方法返回在Java中

創建兩個重載方法。其中一個將給出字符串中每個字符的 ascii值的總和,另一個將產生兩個字符串的ascii值的總和。

使用我已經寫過的方法,我怎麼能打印出我的主要總和?謝謝!

public class Exam3Question2 
{ 
    public static int sumAscii(String Input) 
    { 

     String s = Input; 
     int sum = 0; 
     for (int i = 0; i < s.length(); i++) 
     { 
      sum+= (int)s.charAt(i); 
     } 
     return sum; 
    } 

    public int sumAscii(String Input1, String Input2) 
    { 
     int sum = sumAscii(Input1) + sumAscii(Input2); 
     return sum; 
    } 
    public static void main(String[] args) 
    { 
     Exam3Question2 c = new Exam3Question2(); 
     Scanner in = new Scanner(System.in); 
     String word; 
     System.out.println("Enter some text"); 
     word = in.nextLine(); 
     sumAscii(word); 
     int sum1 = c.sumAscii(Input1); 
     int sum2 = c.sumAscii(Input1, Input2); 
     int sum3 = sum1 + sum2; 
     System.out.println("The sum of the two strings is: " + sum3); 
    } 
} 
+0

你確定計算每個字符的ascii值的邏輯嗎?首先重點說明,主要方法不會是一個問題 –

+0

會做。謝謝 – Bob

+0

@BalwinderSingh這是一個正確的方法來獲取字符串的每個字符的ASCII碼。 –

回答

0

使用你寫,你將打印這樣

Exam3Question2 c = new Exam3Question2(); 
int one = c.sumAscii(0); 
int two = c.sumAscii(0, 0); 
System.out.println("The sum of one String is " + one); 
System.out.println("The sum of two Strings is " + two); 

你逝去的整數(S)ValOneValTwo這些功能,並根據您的意見兩種方法,你從來沒有打算使用它們。這些是用於創建重載函數的虛擬變量。爲此,建議使用String變量。由於@The Law已經爲for循環提出了一個解決方案,我將簡單地添加一個Java 8替代方案。

public int sumAscii(String s) { 
    return s.chars().sum(); 
} 

public int sumAscii(String s1, String s2) { 
    return sumAscii(s1) + sumAscii(s2); 
} 

這樣,你會在調用這些你的主:

public static void main(String[] args) { 
    Exam3Question2 c = new Exam3Question2(); 
    Scanner in = new Scanner(System.in); 

    System.out.println("Enter some text"); 
    String word1 = in.nextLine(); 

    System.out.println("Enter some text"); 
    String word2 = in.nextLine(); 

    int sum1 = c.sumAscii(word1); 
    System.out.println("The sum of one string is: " + sum1); 
    int sum2 = c.sumAscii(word1, word2); 
    System.out.println("The sum of two strings is: " + sum2); 
} 
+0

他獲得任何整數ascii值的邏輯是完全錯誤的。來自main方法的調用對他現在不會有任何幫助,但是一旦他找出了獲得任何整數的ascii值的邏輯,他就會這樣做。 –

+0

他的獲取字符串中每個char的ascii值的邏輯實際上是正確的。 –

+0

這是真的。但他希望使用在方法調用期間傳遞的並且不用於獲得給定ASCII值的整數 –

0

您可能需要外部改變您的方法來計算一個字符串到這一點,所以它需要的String作爲參數和移動userInput方法,使之更加乾淨

public int sumAscii(String userInput) 
{ 

    String s = userInput; 
    int sum = 0; 
    for (int i = 0; i < s.length(); i++) 
    { 
     sum+= (int)s.charAt(i); 
    } 
    return sum; 
} 

,您往後的方法實際上能在這樣的新的重載方法使用前面的方法:

public int sumAscii(String userInput1, String userInput2) 
{ 

int sum = sumAscii(userInput1) + sumAscii(userInput2); 
    return sum; 
} 

而主要會是什麼樣子

public static void main(String[] args) 
{ 
//something to invoke constructor and get strings 
int sum1Str= sumAscii(userInput1) 
int sum2Str = sumAscii(userInput1,userInput2) 
System.out.println("The sum of one string is "+sum1Str); 
System.out.println("The sum of two strings is " +sum2Str); 
} 
0

你是否對你的代碼編譯的問題?我覺得你是因爲在你的主陳述你逝去不存在爲函數的變量:

public static void main(String[] args) 
{ 
    Exam3Question2 c = new Exam3Question2(); 
    Scanner in = new Scanner(System.in); 
    String word; 
    System.out.println("Enter some text"); 
    word = in.nextLine(); 
    sumAscii(word); 

    int sum1 = c.sumAscii(Input1); //What is Input1 
    int sum2 = c.sumAscii(Input1, Input2); //What is Input2 

    int sum3 = sum1 + sum2; 
    System.out.println("The sum of the two strings is: " + sum3); 
} 

另一件事,也沒有必要爲您目前的類的對象調用sumAscii()功能,因爲他們是當前類的一部分:

public static void main(String[] args) 
{ 
    //You don't need this line 
    //Exam3Question2 c = new Exam3Question2(); 

    // Remove the c. from the beginning of the function calls 
    int sum1 = sumAscii(Input1); //What is Input1 
    int sum2 = sumAscii(Input1, Input2); //What is Input2 
    // 
} 

要在主要以做的是在你的word變量調用sumAscii()這樣您就可以添加結果放入sum1什麼:

public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter some text"); 
    String word = in.nextLine(); 

    int sum1 = sumAscii(word); 
    System.out.println("The sum of the string " + word + " is: " + sum1); 
} 

如果你想打電話給你的重載sumAscii()方法有2個不同的字,你需要從用戶那裏得到另一個詞:

public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 

    System.out.println("Enter some text"); 
    String word = in.nextLine(); 

    System.out.println("Enter some more text"); 
    String word2 = in.nextLine(); 

    int sum2 = sumAscii(word, word2); 
    System.out.println("The sum of the two strings is: " + sum2); 
} 

最後,你重載sumAscii()方法可以簡化爲:

public int sumAscii(String Input1, String Input2) 
{ 
    return sumAscii(Input1 + Input2); 
}