2013-08-27 2 views
1
public static void main(String[] args) { 
    //call for input 
    System.out.println("Please Enter a 3-digit number.."); 
    Scanner in = new Scanner(System.in); 
    int[] num = new int[3]; 
    for (int i = 0; i < num.length; i++) { 
     int val = in.nextInt(); 
     num[i] = val; 
    } 

    System.out.println("The Sum of the numbers is " + sumNums); 
    System.out.println("The Reverse of the numbers is " + reverseNums); 

} 

public int sumNums(int x) { 
    return num[0] + num[1] + num[2]; 
} 

public in reverse(int x) { 
    return num[2] + num[1] + num[0]; 
} 

Я пытаюсь создать пару методов, которые добавляют сломанное число, например, если я введу 123, это приведет к 1 + 2 + 3 = 6, но я продолжаю получать "Не могу найти символ". Также, как я разбил вход наиболее эффективным?Манипулирование ввода в Java

+0

Вам нужно понять, как работают переменные и параметры. – SLaks

ответ

0

Существует несколько проблем с вашей реализацией.

В вашем println, вы не делаете вызов метода

System.out.println("The Sum of the numbers is " + sumNums); 
System.out.println("The Reverse of the numbers is " + reverseNums); 

Должно быть

System.out.println("The Sum of the numbers is " + sumNums(0)); 
System.out.println("The Reverse of the numbers is " + reverseNums(0)); 

Кроме того, текущие sumNums и reverseNums методы не используют параметр передается, и они могли бы вероятно, будет удален ...

+0

Нестатический метод не может ссылаться на статический контент - это ошибка, которую я получаю после внесения этого изменения? –

+0

Это потому, что 'sumNums' и' reverseNums' не являются статическими методами. Вероятно, самый простой способ разрешить это - определить методы как public public int. –

0

() в конце вызова функции не является обязательным в jav a, поэтому в вашем println s, вы должны указать sumNums() вместо sumNums. (Нет никакого смысла в int x, я предполагаю, что вы удалите его.

Есть и другие вопросы, такие как .. in должна быть int и Infact, вероятно, следует быть String, если вы хотите, чтобы изменить номер .. сейчас все вы делаете, добавляя их. И вы, вероятно, хотите передать num в качестве параметра для других функций, или сделать его членом класса ..

0
  1. возвращаемого типа вашего последнего метода имеет опечатку.
  2. вам необходимо определить массив num из основного метода (в виде поля) или другие методы не знали эту переменную (Meth ods: OMG, что такое num?)
  3. вызов метода такой: methodName (params ...)
  4. Я не думаю, что вам нужно использовать пар «x» в этих методах.
  5. Я рекомендую вам попробовать лучший код стиль
0

я бы не беспокоиться об эффективности, если я вам. Прямо сейчас, ваша программа не получает любого ввода в методы, которые в этом нуждаются.

Две основные вещи здесь:

  • Ваши методы не static, так что вы не можете назвать их внутри main() без экземпляра вашего класса (назовем его TestClass в настоящее время).

  • Вы не передаете какую-либо информацию, которую вы получаете от пользователя, к вашим методам для начала. Именно по этой причине вы работаете в «не можете найти символ» - num не имеет определения в рамках этих методов.

Чтобы, по крайней мере исправить последний вопрос, вы должны изменить подпись ваших методов, чтобы принять целочисленный массив вместо одного INT:

public int sumNums(int[] num) { 
    return num[0] + num[1] + num[2]; 
} 

public int reverse(int[] num) { 
    return num[2] + num[1] + num[0]; 
} 

Я бы ожидать результатов этих два метода различаются каким-либо образом, поскольку сложение является коммутативным.

Создавая объект, и вызывая методы, я оставляю в качестве упражнения для читателя.

+0

Обратный метод im пытается изменить порядок ввода. input = 123 output = 321 –

Смежные вопросы