2015-11-01 3 views
0

Я пытаюсь создать математическую функцию в android, но у меня много проблем.Математическая функция в android

Прежде всего, я не знаю точно, как объявить его, мой код:

double x; 
double y = Math.abs(x) - Math.cos(x); 

Функция, которую я хочу, чтобы объявить это f(x)= x-cos(x), но я получаю сообщение об ошибке, что х не инициализирован, но я хочу не печатать x = 0; или что-то, потому что позже я хочу изменить значение x.

Во-вторых, я не знаю, как вызвать функцию позже, чтобы изменить ее значение. E.x f (y) или f (o) и x будут заменены другим числом.

+0

Я больше беспокоюсь о второй проблеме, поэтому, пожалуйста, сосредоточьтесь там для начинающих. – nonerth

ответ

3

Вы не можете сделать это на Java. Вы должны обернуть функцию в классе/метод, как:

Static

public class MyFunction { 

    public static double call(double x) { 
    return Math.abs(x) - Math.cos(x); 
    } 
} 

double result = MyFunction.call(4); 

Non статический

public class MyFunction { 

    public double call(double x) { 
    return Math.abs(x) - Math.cos(x); 
    } 
} 

double result = new MyFunction().call(4); 
+0

Приятно, что это работает, хотя вы знаете, что вам нужно также статически ставить класс MyFunction, по крайней мере, в android. – nonerth

+0

Вы можете сделать метод не статическим. На самом деле мне больше нравится нестатическая версия. –

+0

Чувак, можете ли вы использовать методы расширения, например, в C#? Например, определите функцию как «static T DoSomething (эта строка someString, int x)», а затем вы можете называть ее «string str =» hello world »; str.DoSomething (135); '? Если это так, он может сделать это дважды, если он часто будет использовать двойную математику, и я предполагаю, что он это сделает. –

3

Вы объявляете функцию таким образом (простите меня, если я беспорядок синтаксис, я не сделал java через некоторое время)

double calculate(double x) { 
    return Math.abs(x) - Math.cos(x); 
} 

, а затем в вашем коде, вы можете использовать его как это:

double num = 10.5; 
double f = calculate(num); 

и продолжать то, что вам нужно. Я бы посоветовал посмотреть основные учебники по java,
this playlist например, или что-то подходящее для ваших нужд. Если вы не знакомы с концепцией функций, вам нужно сначала взглянуть на все основы программирования.

+0

Кроме того, способ @bigdestroyer для глобализации функции кажется мне порядочным, независимо от определения самой функции. Я не делаю java много, но я думаю, что на самом деле не так уж много я не знаю об определении функций. –

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