还有另外一个与此相关的答案,但我对此并不了解。我对编码相关的所有事情都很新,所以请放轻松。 我有什么:
package com.example.robert.rekenmachine;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
EditText num1text, num2text;
TextView ans;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1text = (EditText)findViewById(R.id.num1text);
num2text = (EditText)findViewById(R.id.num2text);
ans = (TextView)findViewById(R.id.ans);
Integer int1 = Integer.parseInt(num1text.getText().toString()), int2 = Integer.parseInt(num2text.getText().toString());
Float ft1 = Float.parseFloat(num1text.getText().toString()), ft2 = Float.parseFloat(num2text.getText().toString());
}
public void add(View v){
Float ansft = ft1
ans.setText(Integer.toString(1));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
所以在Float ansft = ft1,它说它无法解析符号。我在想,为什么?所以我尝试的是做与num1text,num2text和ans相同的事情,所以我输入:Float ft1;。现在突然可以解决这个问题了。我只是想知道是否有人可以解释它,因为我认为如果我了解其背后的逻辑,它将在未来有很大的帮助。
答案 0 :(得分:1)
ans
在类的范围{ ... }
中声明,并且可以作为对象的字段被所有方法访问。
int1
是一个方法中的局部变量。该方法的范围仅限于其大括号{ ... }
,并且该变量将在调用该方法期间存在。
外面无法访问。
现在可以让int1
成为一个字段。但您可能希望获取文本字段num1text
的最新值。
private int getInt1() {
int int1 = Integer.parseInt(num1text.getText().toString());
return int1;
}
或者简单地说:
private int getInt1() {
return Integer.parseInt(num1text.getText().toString());
}
并且
public void add(View v) {
int int1 = getInt1(); // Take latest value.
ans.setText(Integer.toString(int1));
或更短
ans.setText(Integer.toString(getInt1()));
}
答案 1 :(得分:0)
public void add(View v){
中未定义 ft1以使其可访问,请尝试将方法更改为public void add(View v, Float ft1){
您也可以将Float ft1;
作为属性。
检查java范围以获取更多详细信息。