多次微调caclulation结果不准确 [英] multiple spinner caclulation results are not accurate
本文介绍了多次微调caclulation结果不准确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是新android开发我有一个calulator页,其中我需要做两个微调选择的选项计算量小。我已经使用开关的情况下得到的结果。
所有的UI来了预期,但是当我使用计算按钮导致不能按预期和随机的。
任何人都可以点我想提出什么错?
活动
公共类Calculatorrecon扩展活动实现OnItemSelectedListener { 双大,速度快,RESULT1,结果2;
按钮but1;
TextView的结果;
微调shoesize,shoespeed;
的String [] =大小{选择尺寸,百CM,80 CM,
70后CM,六十CM,的50 CM,40. CM,30. CM,};
的String []速度= {选择速度,40,50,60,70,80后,90,100,}; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
// TODO自动生成方法存根
super.onCreate(savedInstanceState);
的setContentView(R.layout.calculator);
结果=(的TextView)findViewById(R.id.speed);
but1 =(按钮)findViewById(R.id.but);
ArrayAdapter<串GT; speedadapter =新ArrayAdapter<串GT;(
Calculatorrecon.this,android.R.layout.simple_spinner_item,
速度);
speedadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoespeed =(微调)findViewById(R.id.speed48);
shoespeed.setAdapter(speedadapter); ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(
Calculatorrecon.this,android.R.layout.simple_spinner_item,
尺寸);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoesize =(微调)findViewById(R.id.size);
shoesize.setAdapter(适配器); shoesize.setOnItemSelectedListener(本); } @覆盖
公共无效onItemSelected(适配器视图<>为arg0,ARG1观,诠释ARG2,
长ARG3){
// TODO自动生成方法存根
INT positition = shoesize.getSelectedItemPosition();
开关(positition){
情况下0: 打破;
情况1:
大小= 100;
打破;
案例2:
大小= 80;
打破;
案例3:
大小= 70;
打破;
情况4:
大小= 60;
打破;
情况5:
大小= 50;
打破;
情况6:
大小= 40;
打破;
案例7:
大小= 30;
打破; }
INT speedz = shoespeed.getSelectedItemPosition();
开关(speedz){
情况下0: 打破;
情况1:
速度= 4;
打破;
案例2:
速度= 5;
打破;
案例3:
速度= 6;
打破;
情况4:
速度= 7;
打破;
情况5:
速度= 8;
打破;
情况6:
速度= 9;
打破;
案例7:
速度= 10;
打破; }
but1.setOnClickListener(新View.OnClickListener(){ @覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
计算(); result.setText(的String.format(%1F,结果2)+);
}
}); } @覆盖
公共无效onNothingSelected(适配器视图<>为arg0){
// TODO自动生成方法存根 } 私人无效计算(){ 结果2 = 0; 双X =尺寸* 8.4563764;
双Y = 167.2 *速度;
结果2 = Y / X; }
解决方案
试试这个..
1)您的双击
和的String []
变量的名称的同样
微调shoesize;
微调shoespeed;
按钮BTN; 的String [] =大小{选择尺寸,百CM,80 CM,70后CM,六十CM,
的50 CM,40. CM,30. CM,};
的String []速度= {选择速度,40,50,60,70,80后,90后,
100,}; 双final_size,final_speed,结果2; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.calculator); BTN =(按钮)findViewById(R.id.btn);
shoesize =(微调)findViewById(R.id.spinner1);
shoespeed =(微调)findViewById(R.id.spinner2); ArrayAdapter<串GT; speedadapter =新ArrayAdapter<串GT;(这一点,
android.R.layout.simple_spinner_item,速度);
speedadapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoesize.setAdapter(speedadapter); ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,
android.R.layout.simple_spinner_item,大小);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoespeed.setAdapter(适配器); shoesize.setOnItemSelectedListener(新OnItemSelectedListener(){ @覆盖
公共无效onItemSelected(适配器视图<>为arg0,视图V,INT POS机,
长ID){
// TODO自动生成方法存根
INT speedz = shoesize.getSelectedItemPosition();
开关(speedz){
情况下0: 打破;
情况1:
final_speed = 4;
打破;
案例2:
final_speed = 5;
打破;
案例3:
final_speed = 6;
打破;
情况4:
final_speed = 7;
打破;
情况5:
final_speed = 8;
打破;
情况6:
final_speed = 9;
打破;
案例7:
final_speed = 10;
打破; }
} @覆盖
公共无效onNothingSelected(适配器视图<>为arg0){
// TODO自动生成方法存根 } }); shoespeed.setOnItemSelectedListener(新OnItemSelectedListener(){ @覆盖
公共无效onItemSelected(适配器视图<>为arg0,视图V,INT POS机,
长ID){
// TODO自动生成方法存根
INT positition = shoespeed.getSelectedItemPosition();
开关(positition){
情况下0: 打破;
情况1:
final_size = 100;
打破;
案例2:
final_size = 80;
打破;
案例3:
final_size = 70;
打破;
情况4:
final_size = 60;
打破;
情况5:
final_size = 50;
打破;
情况6:
final_size = 40;
打破;
案例7:
final_size = 30;
打破; }
} @覆盖
公共无效onNothingSelected(适配器视图<>为arg0){
// TODO自动生成方法存根 } }); btn.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
结果2 =计算();
Log.v(结果,+的String.format(%1F,结果2)。);
result.setText(的String.format(%1F,结果2)+);
} }); } 保护双重计算(){ 双X = final_size * 8.4563764;
双Y = 167.2 * final_speed;
双RESULT2 = Y / X; 返回结果2; }
I am new to android development i have a calulator page wherein i need to do small calculation on options selected from two spinner. I have used switch case to get results.
All UI is coming as expected but when i calculate using button results are not as expected and random.
can anyone point what mistake i am making??
activity
public class Calculatorrecon extends Activity implements OnItemSelectedListener {
double size, speed, result1, result2;
Button but1;
TextView result;
Spinner shoesize, shoespeed;
String[] size = { "Select Size", "100 cm", "80 cm",
"70 cm", "60 cm", "50 cm", "40 cm", "30 cm", };
String[] speed = { "Select Speed", "40", "50", "60", "70", "80", "90", "100", };
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
result = (TextView) findViewById(R.id.speed);
but1 = (Button) findViewById(R.id.but);
ArrayAdapter<String> speedadapter = new ArrayAdapter<String>(
Calculatorrecon.this, android.R.layout.simple_spinner_item,
speed);
speedadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoespeed = (Spinner) findViewById(R.id.speed48);
shoespeed.setAdapter(speedadapter);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
Calculatorrecon.this, android.R.layout.simple_spinner_item,
size);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoesize = (Spinner) findViewById(R.id.size);
shoesize.setAdapter(adapter);
shoesize.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
int positition = shoesize.getSelectedItemPosition();
switch (positition) {
case 0:
break;
case 1:
size = 100;
break;
case 2:
size = 80;
break;
case 3:
size = 70;
break;
case 4:
size = 60;
break;
case 5:
size = 50;
break;
case 6:
size = 40;
break;
case 7:
size = 30;
break;
}
int speedz = shoespeed.getSelectedItemPosition();
switch (speedz) {
case 0:
break;
case 1:
speed = 4;
break;
case 2:
speed = 5;
break;
case 3:
speed = 6;
break;
case 4:
speed = 7;
break;
case 5:
speed = 8;
break;
case 6:
speed = 9;
break;
case 7:
speed = 10;
break;
}
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
calculate();
result.setText(String.format("%.1f", result2) + "");
}
});
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
private void calculate() {
result2 = 0;
double x = size * 8.4563764;
double y = 167.2 * speed;
result2 = y / x;
}
解决方案
Try this..
1)Your double
and String[]
variable names are same
Spinner shoesize;
Spinner shoespeed;
Button btn;
String[] size = { "Select Size", "100 cm", "80 cm", "70 cm", "60 cm",
"50 cm", "40 cm", "30 cm", };
String[] speed = { "Select Speed", "40", "50", "60", "70", "80", "90",
"100", };
double final_size, final_speed, result2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
btn = (Button) findViewById(R.id.btn);
shoesize = (Spinner) findViewById(R.id.spinner1);
shoespeed = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<String> speedadapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, speed);
speedadapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoesize.setAdapter(speedadapter);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, size);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shoespeed.setAdapter(adapter);
shoesize.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View v, int pos,
long id) {
// TODO Auto-generated method stub
int speedz = shoesize.getSelectedItemPosition();
switch (speedz) {
case 0:
break;
case 1:
final_speed = 4;
break;
case 2:
final_speed = 5;
break;
case 3:
final_speed = 6;
break;
case 4:
final_speed = 7;
break;
case 5:
final_speed = 8;
break;
case 6:
final_speed = 9;
break;
case 7:
final_speed = 10;
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
shoespeed.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View v, int pos,
long id) {
// TODO Auto-generated method stub
int positition = shoespeed.getSelectedItemPosition();
switch (positition) {
case 0:
break;
case 1:
final_size = 100;
break;
case 2:
final_size = 80;
break;
case 3:
final_size = 70;
break;
case 4:
final_size = 60;
break;
case 5:
final_size = 50;
break;
case 6:
final_size = 40;
break;
case 7:
final_size = 30;
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
result2 = calculate();
Log.v("result", ""+String.format("%.1f", result2));
result.setText(String.format("%.1f", result2) + "");
}
});
}
protected double calculate() {
double x = final_size * 8.4563764;
double y = 167.2 * final_speed;
double result2 = y / x;
return result2;
}
这篇关于多次微调caclulation结果不准确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文