2015-11-01 2 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); 

Вы передаете целое число (ы) ValOneValTwo этих функций и в соответствии с вашими комментариями, вы никогда не планировали их использовать , Это фиктивные переменные для создания перегруженных функций. С этой целью рекомендуется использовать переменные String. Поскольку @ Закон уже предложил решение для этого для циклов, я просто добавлю альтернативу 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 любого целого абсолютно неверна. Вызовы от основного метода не помогут ему прямо сейчас, но будут делать, как только он выберет логику получения значения ascii любого целого –

+0

. Его логика получения значений ascii каждого символа в строке фактически правильная –

+0

Это правда. Но он хочет использовать целое число, которое передается во время вызова метода и которое не используется для получения заданных значений ascii. –

0

Вы можете изменить метод расчета одной строки этого, поэтому он принимает строку в качестве параметра и перемещения 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 
    // 
} 

То, что вы хотите делать в основной зовёт sumAscii() на вашей word переменной, так что вы можете добавить результат в 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); 
}