Math.Sqrt(х); не работает?
Я делаю калькулятор и при попытке сделать функцию квадратного корня, она выводит число, которое вы вставили, а не квадратный корень. Вот фрагмент кода, который применяется к функции квадратного корня.
SquareRoot = (Button)findViewById(R.id.SquareRoot);
SquareRoot.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
x = TextBox.getText();
xconv = Double.parseDouble(x.toString());
Math.sqrt(xconv);
answer = Double.toString(xconv);
TextBox.setText(answer);
}});
Просто, чтобы дать некоторую информацию об этом, x - это CharSequence, xconv - это x, преобразованный в double, а answer - это строковое значение. Благодарю.
5 ответов
Это потому, что Math.sqrt возвращает sqrt, но не изменяет переданное значение.
xconv = Math.sqrt(xconv);
это то, что вы хотите.
Проблема в том, что вы просто оставляете результат без сохранения в какой-либо переменной.
Просто инициируйте square root
привести к xconv
и тогда увидите, что вы можете получить результат.
Замени свой код моим кодом
SquareRoot = (Button)findViewById(R.id.SquareRoot);
SquareRoot.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
x = TextBox.getText();
xconv = Double.parseDouble(x.toString());
xconv = Math.sqrt(xconv);//======> you are not initalize the answer to a variable here
answer = Double.toString(xconv);
TextBox.setText(answer);
}});
Вы не храните значение Math.sqrt. Переменная не обновляется, но возвращается результат. Сделать что-то вроде:
xconv = Math.sqrt(xconv);
x=Double.parseDouble(edtchar.getText().toString());
ans.setText(Double.toString(Math.sqrt(x)));
Рассмотрим x как Double, а ans - как текстовое представление.