如果声明不在Android Studio中编译 - 标识符预期和意外令牌错误

问题描述:

我正在开发一个计算收入与费用的应用程序。我试图根据A到F的收入与费用输出等级。如果声明不在Android Studio中编译 - 标识符预期和意外令牌错误

只有一个问题:我的if循环不会编译。我在Android工作室看到过这种情况发生过一次或两次。不知道原因。也许有人可以帮助解释一下。

if语句给我一个标识符预期和意外的令牌错误。

package ericleeconklin.costoflivingcalculator; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import java.io.*; 
import java.io.Console; 


public class FinalGrade extends ActionBarActivity { 


Bundle b = getIntent().getExtras(); 
double rentMortgage = b.getDouble("rentmortgage"); 
double utilities = b.getDouble("utilities"); 
double insurance = b.getDouble("insurance"); 
double phoneInternet = b.getDouble("car"); 
double food = b.getDouble("phone"); 
double carPayment = b.getDouble("food"); 
double misc = b.getDouble("misc"); 
double myIncome = b.getDouble("myincome"); 

public double totalExpenses = rentMortgage+utilities+insurance+phoneInternet+food+carPayment+misc; 
public double expensesToIncome = totalExpenses/myIncome; 

//Calculate grade based on expenses to income ratio 
String myGrade = "A"; 

if (expensesToIncome<0.25) { 
    myGrade = "A"; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_final_grade); 
} 


@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_final_grade, 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); 
} 
} 
+8

'if'语句只能在里面的方法。 – immibis

+0

你可以使用三元运算符。像'String mygrade = expenseToIncome

+0

谢谢immibis。显示这个的文档在哪里?我一直无法找到任何可以说明这一点的内容,但这是有道理的。 –

你有一个方法以外的代码。这是不允许的。 您应该将此代码放在方法体中,然后调用此方法。例如:

Public String getGrade(double expensesToIncome){ 
    //Calculate grade based on expenses to income ratio 
    String myGrade = "A"; 

    if (expensesToIncome<0.25) { 
     myGrade = "A"; 
    } 
    return myGrade; 
} 
+0

谢谢。再一次,找不到证明这一点的文件,但它起作用。 –

+0

看看这里:https://docs.oracle.com/javase/specs/ 其中一些是硬核语法规范,但它完全描述了Java语言。 –

+0

我知道oracle文档的位置。我只是不知道它的确切点,它说条件语句必须在方法内。 –