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);

    }});
double squareRoot = Math.sqrt(xconv);

Вы не храните значение Math.sqrt. Переменная не обновляется, но возвращается результат. Сделать что-то вроде:

xconv = Math.sqrt(xconv);
x=Double.parseDouble(edtchar.getText().toString());
ans.setText(Double.toString(Math.sqrt(x)));

Рассмотрим x как Double, а ans - как текстовое представление.

Другие вопросы по тегам