首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >整型数组切换器Android JAva

整型数组切换器Android JAva
EN

Stack Overflow用户
提问于 2013-05-23 02:55:18
回答 2查看 524关注 0票数 0

我正在尝试做一个简单的转换单位应用程序。我有两个微调器,其中一个包含一个数组,表示不同类型的单位。

当我根据在两个微调器中选择的内容按下转换按钮时,应该会执行一些操作。

示例:微调器1-选中磅US / Spinner2 -选中它们当我按下KiloGrams按钮时,它会将其转换并显示在另一个文本框中。

我的问题是,我每次都要检查在每个微调器中选择了什么……这将是大量的if,else if语句,我希望如果我可以使用一个带整数数组的switch来实现它。为了更好地理解它,下面是我的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void mass() {
    num = (Double.parseDouble(input.getText().toString()));

    int position1 = sInput.getSelectedItemPosition();
    int position2 = sResult.getSelectedItemPosition();
    int[] position = new int[] {position1, position2};

     if(position[0] == 1 && position[1] == 6) {
         setValue((Double.toString(round(num / 2.2))));
     } else if(position1 == 6 && position2 == 1) {
         setValue((Double.toString(round(num * 2.2))));
     }
}

数组位置保存在微调器中选定的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-23 03:06:22

例如,为了将质量转换为不同的单位,我会使用一个中间单位。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final int TYPE_KG = 0;
final int TYPE_POUNDS = 1;

// these two values come from your spinners
int sourceUnitType; // eg 0=kg, 1=pounds, ...
int destUnitType;   // same types as the source unit type

然后,您可以使用函数将源数字转换为中间单位,如千克

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
double convertMassToKg(int sourceUnitType, double source)
{
    switch (sourceUnitType)
    {
    case TYPE_KG:
        return source;
    case TYPE_POUND:
        return source * 0.453592;
    }
}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
double convertKgToMass(int destinationUnitType, double kilos)
{
    switch (destinationUnitType)
    {
    case TYPE_KG:
        return kilos;
    case TYPE_POUND:
        return kilos / 0.453592;
    }
}

这只是我对这个问题的看法。您的微调器可以采用什么值?例如,因为让别人尝试将千米转换为千克是没有意义的,所以这取决于您如何分解您的程序(即,此形式是否仅用于转换质量?)那么也许你可以以不同的方式来处理它。

你可以让用户在第一个微调器中选择源类型,然后只用那些有意义的类型来更新第二个微调器,例如,如果第一个微调器被选择为“千米”,那么第二个微调器可以有“英里”、“厘米”、“码”等选项。

票数 1
EN

Stack Overflow用户

发布于 2013-05-23 03:03:08

这只是一个想法,也许还有比这更好的想法

最初创建二维数组a,其维数为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[ number of first spinner's item][number of second spinner's item]

已使用转换因子初始化数组。例如

如果kg到豆荚的转换因子是2.2。在旋转器中,1 kg的索引是1,而在旋转器中,2 kg的索引是3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[1][3] = 2.2

现在,当按下转换按钮时,执行以下操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
result = value*a[spiner1 index][spinner 2 index]

的明显优势:

易于在单个数组中进行computation

  • all转换,易于add/edit/change

  • no if else

可见的劣势

  • 阵列的额外内存和额外的初始化操作
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16704924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文