【问题标题】:syntax error in androidandroid中的语法错误
【发布时间】:2013-07-26 17:30:39
【问题描述】:

我写了这个方法,但是一直报错:

标记“int”的语法错误,@预期

语法错误,插入“EnumBody”来完成BlockStatement

@Override
public int calculateCurrency() 
{
    int[] currency = getResources().getIntArray(R.array.currenciesvalues);
    return Integer.parseInt((String) spinner1.getSelectedItem()) / Integer.parseInt((String)spinner2.getSelectedItem());
}

这是该方法所在的完整 java 类。

package com.msc.conv;

import java.text.DecimalFormat;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class CurrencyActivity extends Activity {
    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.currency);


final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
    final  Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
   final EditText etResult = (EditText) findViewById(R.id.etResult);

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.currencies, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener(){

//public class MyOnItemSelectedListener implements OnItemSelectedListener{

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
        //String str = parent.getItemAtPosition(pos).toString();
        //etResult.setText(str);

    }
    @Override
    public void onNothingSelected(AdapterView parent){
        //Do nothing
    }



});

spinner2.setAdapter(adapter);
spinner2.setOnItemSelectedListener(new OnItemSelectedListener(){

//public class MyOnItemSelectedListener implements OnItemSelectedListener{

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
        //String str = parent.getItemAtPosition(pos).toString();
        //etResult.setText(str);

    }
    @Override
    public void onNothingSelected(AdapterView parent){
        //Do nothing
    }



});



final EditText editCurr = (EditText) findViewById(R.id.etamount);
    Button convert = (Button) findViewById(R.id.btn_convert);
     convert.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v){
             double curr = Double.valueOf(editCurr.getText().toString());


                double result2 = Double.valueOf(spinner1.toString()) / Double.valueOf(spinner2.toString());
                double result = curr * result2;
                etResult.setText(String.valueOf(result));
         }
     });


        public int calculateCurrency() 
        {
            int[] currency = getResources().getIntArray(R.array.currenciesvalues);
            return Integer.parseInt((String) spinner1.getSelectedItem()) / Integer.parseInt((String)spinner2.getSelectedItem());//currenciesvalues[spinner2.getSelectedItemPosition()];
        }

    Button homeBtn = (Button) findViewById(R.id.btn_currencyhome); 
    homeBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) { 
        // TODO Auto-generated method stub             
        startActivity(new Intent(CurrencyActivity.this, MainActivity.class));         
        }     
    });
}

}

【问题讨论】:

  • 创建类时,是否创建了 Enum 类?
  • 请提供更多上下文。这对我来说看起来不错在正确的上下文中
  • @buzcek 不,我没有创建枚举类,我必须这样做吗?
  • @akkki:我们只是猜测一切,直到您向我们展示周围的代码。问题很可能出在此代码出现的 where 上。例如,尝试删除方法主体,将其替换为 return 0;(我注意到您实际上并没有使用 currency...)
  • @JonSkeet 如果我删除正文并替换为 return 0 我仍然会遇到同样的问题

标签: java android syntax


【解决方案1】:

由于代码格式错误,很难说,但我怀疑这句话是问题所在(就在您最初发布的代码上方):

convert.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v){
        double curr = Double.valueOf(editCurr.getText().toString());
        double result2 = Double.valueOf(spinner1.toString()) / Double.valueOf(spinner2.toString());
        double result = curr * result2;
        etResult.setText(String.valueOf(result));
    }
});

该代码根本不属于方法或构造函数——它只是在类的中间。唯一可以直接在一个类中的东西是字段声明、方法、构造函数、析构函数、嵌套类和初始化器。

我怀疑你实际上是想把它放在构造函数中。最后的代码与homeBtn 相同。

所以作为一个更短的例子,这段代码是无效的:

public class InvalidCode {
    private Button button = new Button();
    button.setText("Foo");
}

但这是有效的:

public class ValidCode {
    private Button button = new Button();

    public Button() {
        button.setText("Foo");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    相关资源
    最近更新 更多