【问题标题】:need help programming math between editText需要帮助在editText之间编程数学
【发布时间】:2023-03-04 15:22:01
【问题描述】:

我需要帮助了解如何在不同的 EditText 视图之间完成数学运算。我不是要别人给我写代码,但也许会解释完成这项工作所涉及的内容。

我想发布一张这张照片,但作为一个新用户,我不能。基本上我有一个 EditText 用于以下内容:宽度、长度、屋檐高度、间距。

我有所有 TextViews 的 ID,我只是不知道如何对所涉及的幕后数学进行编程以使其工作。我确实有执行数学所需的方程式,只是不确定在哪里以及如何将它们放在 java 中。

基本上,我需要用户在前 4 个框中的每个框中输入一个数字。我需要使用一个方程式来生成将显示在“SQFT”框中的答案。用户还将在成本框中输入一个数字,该数字将生成需要在单独的 TextView 中显示的“Total”。

任何帮助都将不胜感激,即使它可以为我指明教程的方向以帮助我入门。感谢您的帮助。

只是为了说明我需要使用什么类型的数学,下面是我用于 excel 计算的公式。

(length+width)*(Eave+1)*2 + (((width/2)/12*Pitch)*(width/2)*2)

【问题讨论】:

  • 不投反对票。从您的问题来看,您似乎是编程的初学者(或者可能是 Java/Android 开发的初学者)。所以这里无法向你解释一切。您应该阅读official Android docs 和/或Java docs。也请阅读StackOverflow FAQs
  • 谢谢,我一遍又一遍地查看了 android 文档。我不想解释一切。我想要的只是指向一个让我开始的方向。我承认,我是 Android 的初学者,老实说,我不知道初学者不能发布问题。很抱歉,虽然不是每个人都是初学者吗?
  • 初学者可以在这里提问。但是要确保你的问题是关于一个特定的编程问题,而不是一些给我一些教程或如何做的事情。如果您不了解 Android,请参阅其 Hello World. 教程。如果您已经了解 Java,Android 非常容易学习。如果你卡在任何地方,把你的问题放在这里,那么社区一定会帮助你。
  • 我创建了hello world。实际上,我有一个带有六个不同按钮的主文件,这些按钮使用 onclicklistener 打开 6 个不同的菜单,对于初学者来说,我觉得我正在很好地为 android 编程,我似乎被困在这里。我花了几个小时试图找到正确的解决方案,但似乎找不到正确的答案。
  • 我们可以在聊天中讨论您的问题,因为问题不清楚,不知道确切的问题,我们将无法提供好的解决方案。你可以随时邀请我。编辑:啊..刚刚意识到你需要有一定的代表才能使用聊天。试着写一些你的代码并使用一些图片,这样我们就可以知道你到底想要什么。

标签: android math int


【解决方案1】:

我不确定你是否不知道如何提取在 EditTexts 中输入的数字,如何实际进行数学计算,如何让用户启动计算或如何呈现。

我创建了一个包含 2 个 EditText 和一个 TextView 的小型演示,它显示输入数字的总和。用户不需要按任何按钮来执行计算,每次用户更新文本时都会自动执行(我假设这就是你想要的)。

请注意,这段代码不是很好的代码,它使用了很多内部匿名类等,但它应该演示如何做到这一点的机制。

这是 ma​​in.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/a"
        android:hint="input a"
        android:inputType="number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:minWidth="60dp"/>
    <EditText 
        android:id="@+id/b"
        android:hint="input b"
        android:inputType="number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:minWidth="60dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="a+b = " />
    <TextView
        android:id="@+id/total"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" />

</LinearLayout>

这是示例活动:

package com.example;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;

public class SumActivity extends Activity
{
    private int a;
    private int b;
    private TextView totalOutput;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        EditText inputA = (EditText) findViewById(R.id.a);
        EditText inputB = (EditText) findViewById(R.id.b);
        totalOutput = (TextView) findViewById(R.id.total);
        inputA.addTextChangedListener(new TextChangedListener()
        {

            @Override
            public void numberEntered(int number)
            {
                a = number;
                updateTotal();
            }
        });
        inputB.addTextChangedListener(new TextChangedListener()
        {

            @Override
            public void numberEntered(int number)
            {
                b = number;
                updateTotal();
            }
        });
    }

    private void updateTotal()
    {
        int total = a + b; // This is where you apply your function
        totalOutput.setText("" + total); // need to do that otherwise int will
                                            // be treated as res id.
    }

    private abstract class TextChangedListener implements TextWatcher
    {

        public abstract void numberEntered(int number);

        @Override
        public void afterTextChanged(Editable s)
        {
            String text = s.toString();
            try
            {
                int parsedInt = Integer.parseInt(text);
                numberEntered(parsedInt);
            } catch (NumberFormatException e)
            {
                Log.w(getPackageName(), "Could not parse '" + text + "' as a number", e);
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
        }
    }

}

【讨论】:

  • Savvas,谢谢。这是一个巨大的帮助。我会努力解决这个问题,看看我能想出什么。
  • 好的,您可能已经知道,这非常有效。我制作了一个示例程序并添加了另外两个 EditText 框。我改变了数学公式,它工作得很好。现在我只需要在我的实际项目中使用它。这需要在不同于主布局的布局上操作 EditText 视图。在我的主布局上,我有一个按钮,用户单击该按钮并将其带到此布局。我把这个新代码放在java代码的什么地方。它是否应该低于已经存在的所有内容并开始一个新的公共课程?我希望这个问题是有道理的。再次感谢您的帮助。
  • 如果您想更好地了解我在说什么,您可以查看链接...这是我在 stackoverflow 上发布之前开始的地方。 link
  • 我看到了你的链接。你真的应该阅读 Android 的基础知识以及如何做这些事情。简而言之,您需要在按下按钮时启动一个新的 Activity,而不是更改布局。阅读有关 Android 开发人员的活动,您会找到自己的方式。
  • Savvas,再次感谢您的建议。您可能没有意识到,但您只是告诉我启动一个新的 Activity 就帮助了我。我现在有一个新的 .java 文件,其中包含您制作的代码(我编辑它以适合我的项目,还有 2 个 Edittext 框并更改 id)。我知道这看起来很基本,但再次感谢。我现在需要将“int”更改为“double”或使用 2 个小数点的东西。然后需要弄清楚如何使用另一个 editText 作为成本,并将它与我刚刚得到的结果相乘作为总数。工作正在进行中,虽然缓慢但肯定我越来越近了。
猜你喜欢
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 2022-01-17
  • 1970-01-01
  • 2011-10-04
相关资源
最近更新 更多