2011-07-19 12 views
0

My apkが2つのエラーを表示していますが、今朝26日から下がっていますが、解決策を把握していないようです。最初の質問には、開け閉めの括弧と開いた閉じた括弧を追跡するための良い方法/トリックがありますか? 2番目の質問根本的に私のコードに間違いがありますか?最初のエラーはプライベートボタンbtnExecuteです。私は閉鎖された括弧が不足していると思っていますが、どこでは知りません。この昨晩働いたときに、その行の近くに閉じた括弧がありませんでした 2番目のエラーは、私はそれがセミコロン、括弧またはブラケットを欠いているという気持ちがあります。 目標はスピナーに表示された値を読み取り、ifステートメントを使用して実行するルーチンを決定します。各ルーチンの中で、私はヌルまたは空白のために特定のEditTextをチェックし、空でなければスピナーエントリに基づく特定の式をチェックします。IfステートメントのAndroid Java構文エラー

package com.androidbook.triviaquiz8; 

import android.app.AlertDialog; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.SpinnerAdapter; 

public class QuizHelpActivity extends QuizActivity { 

private EditText m1_sqs1; 
private EditText m1_rs1; 
private EditText m1_rs2; 
private EditText m1_cd; 
private EditText m1_els1; 
private EditText m1_els2; 

private EditText m1_sqs1_eng; 
private EditText m1_rs1_eng; 
private EditText m1_rs2_eng; 
private EditText m1_cd_eng; 
private EditText m1_els1_eng; 
private EditText m1_els2_eng; 

private EditText m1_sqs1_met; 
private EditText m1_rs1_met; 
private EditText m1_rs2_met; 
private EditText m1_cd_met; 
private EditText m1_els1_met; 
private EditText m1_els2_met; 

private EditText m1_sa_in; 
private EditText m1_sa_ft; 
private EditText m1_sa_mm; 
private EditText m1_sa_m; 

private EditText m1_ed_in; 
private EditText m1_ed_ft; 
private EditText m1_ed_mm; 
private EditText m1_ed_m; 

private Spinner m1_ss_spinner; 
private Spinner m1_sqs1_spinner; 
private Spinner m1_rs1_spinner; 
private Spinner m1_rs2_spinner; 
private Spinner m1_cd_spinner; 
private Spinner m1_els1_spinner; 
private Spinner m1_els2_spinner; 

private QuizHelpActivity mContext; 

private Button btnSave; 
private Button btnClear; 
private Button btnExecute; 


// 
// onCreate - let the fun begin! 
// 

@Override 
    public void onCreate(Bundle savedInstanceState){  
     super.onCreate(savedInstanceState); 
     mContext = this; 
     setContentView(R.layout.help); 

     m1_sqs1 = (EditText) findViewById(R.id.m1_sqs1); 
     m1_rs1 = (EditText) findViewById(R.id.m1_rs1); 
     m1_rs2 = (EditText) findViewById(R.id.m1_rs2); 
     m1_cd = (EditText) findViewById(R.id.m1_cd); 
     m1_els1 = (EditText) findViewById(R.id.m1_els1); 
     m1_els2 = (EditText) findViewById(R.id.m1_els2); 

     m1_sqs1_eng = (EditText) findViewById(R.id.m1_sqs1); 
     m1_rs1_eng = (EditText) findViewById(R.id.m1_rs1); 
     m1_rs2_eng = (EditText) findViewById(R.id.m1_rs2); 
     m1_cd_eng = (EditText) findViewById(R.id.m1_cd); 
     m1_els1_eng = (EditText) findViewById(R.id.m1_els1); 
     m1_els2_eng = (EditText) findViewById(R.id.m1_els2); 

     m1_sqs1_met = (EditText) findViewById(R.id.m1_sqs1); 
     m1_rs1_met = (EditText) findViewById(R.id.m1_rs1); 
     m1_rs2_met = (EditText) findViewById(R.id.m1_rs2); 
     m1_cd_met = (EditText) findViewById(R.id.m1_cd); 
     m1_els1_met = (EditText) findViewById(R.id.m1_els1); 
     m1_els2_met = (EditText) findViewById(R.id.m1_els2); 

     m1_sa_in = (EditText) findViewById(R.id.m1_sa_in); 
     m1_sa_ft = (EditText) findViewById(R.id.m1_sa_ft); 
     m1_sa_mm = (EditText) findViewById(R.id.m1_sa_mm); 
     m1_sa_m  = (EditText) findViewById(R.id.m1_sa_m); 

     m1_ed_in = (EditText) findViewById(R.id.m1_ed_in); 
     m1_ed_ft = (EditText) findViewById(R.id.m1_ed_ft); 
     m1_ed_mm = (EditText) findViewById(R.id.m1_ed_mm); 
     m1_ed_m  = (EditText) findViewById(R.id.m1_ed_m); 


     // 
     // Create an OnClick Event in each button. 
     // 

     Button btnExecute = (Button) findViewById(R.id.btnExecute); 
     Button btnSave  = (Button) findViewById(R.id.btnSave); 
     Button btnClear  = (Button) findViewById(R.id.btnClear); 

     btnSave.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 
       } 
      }); 
     btnClear.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 
       } 
      }); 
     btnExecute.setOnClickListener(new View.OnClickListener() { 
      private AlertDialog show; 
      public void onClick(View arg0) { 
       AdapterView<SpinnerAdapter> m1ssspinner; 
       if (((m1ssspinner.getSelectedItem() == "Square"))) { 
          if ((m1_sqs1.getText().length() == 0)   
          || (m1_sqs1.getText().toString() == " ")) {   
           show = new AlertDialog.Builder(mContext).setTitle("Error") 
           .setMessage("The Square Side length is empty")    
           .setPositiveButton("OK", null).show();   
          } else { 
           double result = new Double(m1_sqs1.getText().toString()) * new Double(m1_sqs1.getText().toString()); 
           m1_sa_in.setText(Double.toString(result)); 
            } 
         if (((m1ssspinner.getSelectedItem() == "Rectangle"))) { 
          if ((m1_rs1.getText().length() == 0)   
          || (m1_rs1.getText().toString() == " ") 
          || (m1_rs1.getText().toString() == " ") 
          || (m1_rs1.getText().length() == 0)){ 
           show = new AlertDialog.Builder(mContext).setTitle("Error") 
           .setMessage("A Rectangle Side length is empty")    
           .setPositiveButton("OK", null).show(); 
          } else { 
           double result = new Double(m1_rs1.getText().toString()) * new Double(m1_rs2.getText().toString()); 
           m1_sa_in.setText(Double.toString(result)); 
            } 
         if (((m1ssspinner.getSelectedItem() == "Circle"))) { 
          if ((m1_cd.getText().length() == 0)   
          || (m1_cd.getText().toString() == " ") 
          || (m1_cd.getText().toString() == " ")){ 
           show = new AlertDialog.Builder(mContext).setTitle("Error") 
           .setMessage("The Circle Diameter is empty")    
           .setPositiveButton("OK", null).show(); 
          } else { 
           double result = new Double(m1_cd.getText().toString()) * new Double(m1_cd.getText().toString()); 
           m1_sa_in.setText(Double.toString(result)); 
            } 
         if (((m1ssspinner.getSelectedItem() == "Elliptical"))) { 
          if ((m1_els1.getText().length() == 0)   
          || (m1_els1.getText().toString() == " ") 
          || (m1_els2.getText().toString() == 0) 
          || (m1_els2.getText().toString() == " ")){ 
           show = new AlertDialog.Builder(mContext).setTitle("Error") 
           .setMessage("An Elliptical Diameter is empty")    
           .setPositiveButton("OK", null).show(); 
          } else { 
           double result = new Double(m1_els1.getText().toString()) * new Double(m1_els2.getText().toString()); 
           m1_sa_in.setText(Double.toString(result)); 
          } 
     ); 

// 
// End OnClick Event in each button. 
// 

// 
// check media availability 
// 

boolean mExternalStorageAvailable = false; 
boolean mExternalStorageWriteable = false; 
String state = Environment.getExternalStorageState(); 
if (Environment.MEDIA_MOUNTED.equals(state)) { 

// We can read and write the media  

mExternalStorageAvailable = mExternalStorageWriteable = true; 
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {  

// We can only read the media  

mExternalStorageAvailable = true;  
mExternalStorageWriteable = false;} else {  

// Something else is wrong. It may be one of many other states, but all we need  
// to know is we can neither read nor write  

mExternalStorageAvailable = mExternalStorageWriteable = false;  
}  

// 
// end check media availability 
//   

// 
// create METHOD 1 STACK SHAPE SPINNER (m1_ss_spinner) with displayed text 'centered' 
// 

Spinner m1ssspinner = (Spinner)findViewById(R.id.m1_ss_spinner);   
    ArrayAdapter<CharSequence> m1ssadapter = ArrayAdapter.createFromResource(this, R.array.m1_ss_list, R.layout.my_normal_spinner_style);    
    m1ssadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    m1ssspinner.setAdapter(m1ssadapter); 

// 
// get METHOD 1 STACK SHAPE UNIT (m1_ss_unit) 
// 

    Object m1_ss_unit = (m1ssspinner.getSelectedItem()); 

// 
// create METHOD 1 SQUARE_SIDE1 SPINNER (m1_sqs1_spinner) with displayed text 'centered' 
// 

    Spinner m1sqs1spinner = (Spinner)findViewById(R.id.m1_sqs1_spinner);   
     ArrayAdapter<CharSequence> m1sqs1adapter = ArrayAdapter.createFromResource(this, R.array.m1_sqs1_list, R.layout.my_normal_spinner_style);    
     m1sqs1adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
     m1sqs1spinner.setAdapter(m1sqs1adapter); 

// 
// create METHOD 1 RECTANGLE_SIDE1 SPINNER (m1_rs1_spinner) with displayed text 'centered' 
// 

    Spinner m1rs1spinner = (Spinner)findViewById(R.id.m1_rs1_spinner);   
     ArrayAdapter<CharSequence> m1rs1adapter = ArrayAdapter.createFromResource(this, R.array.m1_rs1_list, R.layout.my_normal_spinner_style);    
     m1rs1adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
     m1rs1spinner.setAdapter(m1rs1adapter); 

// 
// create METHOD 1 RECTANGLE_SIDE2 SPINNER (m1_rs2_spinner) with displayed text 'centered' 
// 

    Spinner m1rs2spinner = (Spinner)findViewById(R.id.m1_rs2_spinner);   
     ArrayAdapter<CharSequence> m1rs2adapter = ArrayAdapter.createFromResource(this, R.array.m1_rs2_list, R.layout.my_normal_spinner_style);    
     m1rs2adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
     m1rs2spinner.setAdapter(m1rs2adapter);  

// 
// create METHOD 1 CIRCULAR DIAMETER SPINNER (m1_cd_spinner) with displayed text 'centered' 
// 

    Spinner m1cdspinner = (Spinner)findViewById(R.id.m1_cd_spinner);   
     ArrayAdapter<CharSequence> m1cdadapter = ArrayAdapter.createFromResource(this, R.array.m1_cd_list, R.layout.my_normal_spinner_style);    
     m1cdadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
     m1cdspinner.setAdapter(m1cdadapter); 

// 
// create METHOD 1 ELLIPTICAL DIAMETER1 SPINNER (m1_cd_spinner) with displayed text 'centered' 
// 

    Spinner m1els1spinner = (Spinner)findViewById(R.id.m1_els1_spinner);   
     ArrayAdapter<CharSequence> m1els1adapter = ArrayAdapter.createFromResource(this, R.array.m1_els1_list, R.layout.my_normal_spinner_style);    
     m1els1adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
     m1els1spinner.setAdapter(m1els1adapter); 

// 
// create METHOD 1 ELLIPTICAL DIAMETER2 SPINNER (m1_cd_spinner) with displayed text 'centered' 
// 

    Spinner m1els2spinner = (Spinner)findViewById(R.id.m1_els2_spinner);   
     ArrayAdapter<CharSequence> m1els2adapter = ArrayAdapter.createFromResource(this, R.array.m1_els2_list, R.layout.my_normal_spinner_style);    
     m1els2adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
     m1els2spinner.setAdapter(m1cdadapter);   

} 
+0

を再考する必要がある場合は、のラットの巣を持っていることを見つけている場合は、一度にこの一歩を取ることですあなたにエラーを与えているセクションへの質問に含まれています...それはあまりにも多くのコードです:-)脇に、括弧とセミコロンのマッチングに問題があるなら、あなたもリファクタリングすることをお勧めします各可動部分を単純化する方法。たとえば、単純なコントロールの初期化コード(findbyviewなど)を別のプライベートメソッドに移動します。インラインではなくクラスメンバーとしてクリックリスナーを実装します。これらのすべてを分離することで、エラーの位置を理解するのに役立ちます –

+0

logcatの正確なエラーは何ですか? – Suchi

+0

問題はたくさんあります:書式設定(角括弧の追跡にも役立ちます)、mContext変数(ちょうど役に立たないようです)。 – sandrstar

答えて

0

次は何の閉じ括弧がありません...

btnExecute.setOnClickListener(new View.OnClickListener() { ... 
    public void onClick(View arg0) { ... 
     if (((m1ssspinner.getSelectedItem() == "Square"))) { ... 
      if (((m1ssspinner.getSelectedItem() == "Rectangle"))) { ...    
      if (((m1ssspinner.getSelectedItem() == "Circle"))) { ... 
      if (((m1ssspinner.getSelectedItem() == "Elliptical"))) { ... 

あなたbtnExecute.setOnClickListenerこの

0123のようになります。
btnExecute.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View arg0) { 
      ... your if statements ... 
    } 
}); 
0

以下は間違っています。関数内にAlertDialogショーを入れてください。

0

括弧内にエラーがあります。私はあなたが通過し、番号でコメントを設定することをお勧めします。

ブラケットを開いている場合は1を追加し、ブラケットが閉じている場合は1を減算します。

これは、あなたが将来的に問題を解決するのに役立ちます:。

if(true) 
{ //1 
    while(true) 
    { //2 
    } //1 

} //0 
0

問題は「}」を入れていない、あなたのbtnExecute.youであるbtnExecuteの中で他の最後の後を参照してください。あなたは}別のものを配置する必要があります

2

私はどこから始めるべきかわからないので、ここでは多くの問題があります。その後、他のすべてが含まれており、これまでのインスタンス

をtrueに解決するから、他の人のいずれかを排除するあなたの非常に最初の/場合は、{}アンバランスを持っているので、これは文句を言わない、もちろんコンパイルが、あなたの問題の少なくともは

ないthatsの

if (((m1ssspinner.getSelectedItem() == "Square"))) 

は、最初のが真である場合、第二はなることはありません

if (((m1ssspinner.getSelectedItem() == "Rectangle"))) 

である次のような他のすべてのテストをカプセル化。

はまた、ローカル持っているとクラスが同じ名前で異なる型の変数をスコープとローカルは

AdapterView<SpinnerAdapter> m1ssspinner; // Probably not what you want to use ... 

Spinner m1ssspinner = (Spinner) ... 

は、その後、あなたが重複したテスト

if ((m1_rs1.getText().length() == 0)   // Same test twice! 
    || (m1_rs1.getText().toString() == " ") 
    || (m1_rs1.getText().toString() == " ") 
    || (m1_rs1.getText().length() == 0)) 
でブロックを持っている(または右のタイプの)初期化されていません

それとも同じことが、また、int型

if (((m1ssspinner.getSelectedItem() == "Elliptical"))) { 
    if ((m1_els1.getText().length() == 0)   
    || (m1_els1.getText().toString() == " ") 
    || (m1_els2.getText().toString() == 0)  // you probably meant int! 
    || (m1_els2.getText().toString() == " ")){ 
に対して文字列をテストしている。この1 10

また、スピナーから返されたオブジェクトを文字列リテラルで比較しています(一致しません)

クラスのトップレベルでビュークラスを初期化しています。

とにかくこのブロックは少なくともコンパイルされますが、このプログラムは単に書かれたとおりに動作しません。まだまだたくさんのことがあります。

私のアドバイスは、あなたが/あなたはおそらく、私はあなたがコードスニペットをダウン削り取っ示唆ソリューション

btnExecute.setOnClickListener(new View.OnClickListener() 
{ 
    private AlertDialog show; 
    public void onClick(View arg0) 
    { 
     //AdapterView<SpinnerAdapter> m1ssspinner; // Probably you meant to use the     class scoped of same name 

     if (((m1ssspinner.getSelectedItem() == "Square"))) { 
      if ((m1_sqs1.getText().length() == 0)   
       || (m1_sqs1.getText().toString() == " ")) {   
        show = new AlertDialog.Builder(mContext).setTitle("Error") 
         .setMessage("The Square Side length is empty")    
         .setPositiveButton("OK", null).show();   
        } else 
        { 
         double result = new Double(m1_sqs1.getText().toString()) * new        Double(m1_sqs1.getText().toString()); 
         m1_sa_in.setText(Double.toString(result)); 
        } 
    } else  

    if (((m1ssspinner.getSelectedItem() == "Rectangle"))) { 
      if ((m1_rs1.getText().length() == 0)   
      || (m1_rs1.getText().toString() == " ") 
      || (m1_rs1.getText().toString() == " ") 
      || (m1_rs1.getText().length() == 0))   { 
      show = new AlertDialog.Builder(mContext).setTitle("Error") 
      .setMessage("A Rectangle Side length is empty")    
      .setPositiveButton("OK", null).show(); 
      } else 
      { 
       double result = new Double(m1_rs1.getText().toString()) * new       Double(m1_rs2.getText().toString()); 
      m1_sa_in.setText(Double.toString(result)); 
      } 
    } else  

    if (((m1ssspinner.getSelectedItem() == "Circle"))) { 
      if ((m1_cd.getText().length() == 0)   
       || (m1_cd.getText().toString() == " ") 
       || (m1_cd.getText().toString() == " ")) 
      { 
       show = new AlertDialog.Builder(mContext).setTitle("Error") 
        .setMessage("The Circle Diameter is empty")    
        .setPositiveButton("OK", null).show(); 
      } else 
      { 
       double result = new Double(m1_cd.getText().toString()) * new Double(m1_cd.getText().toString()); 
         m1_sa_in.setText(Double.toString(result)); 
      } 
     } else 
     if ((m1ssspinner.getSelectedItem() == "Elliptical")) { 
        if ((m1_els1.getText().length() == 0)   
        || (m1_els1.getText().toString() == " ") 
        || (m1_els2.getText().length() == 0) 
        || (m1_els2.getText().toString() == " ")) 
        { 
         show = new AlertDialog.Builder(mContext).setTitle("Error") 
         .setMessage("An Elliptical Diameter is empty")    
         .setPositiveButton("OK", null).show(); 
        } else { 
         double result = new Double(m1_els1.getText().toString()) * new Double(m1_els2.getText().toString()); 
         m1_sa_in.setText(Double.toString(result)); 
        } 
       } 

      } 
     } 

     ); 
+0

入力のためのうわーありがとう。私は最終的にレイアウトがうまくいってからJavaコードに進んだというアイデアでこのapkを始めました。私は非常に明白な経験がありませんでした。昨夜、私は正しい答えを出すために正方形の1入力にできるようになったと感じました。今日私は、「形状」のスピナーを評価してから、数学を行うための適切な入力を選択することに決めました。私は良いと思った。私も宇宙船を作ろうとする洞窟人のように笑って感じます。これはレイアウトの終わりに近づいていますが、私は少し前にあきらめるつもりです。 – WmBurkert

+0

私はコードをコンパイルしていますが、実行中はfcingしています。私はその理由を理解しようとしています。コメントが限られているので、見るコードを電子メールで送れますか?私はやっていることにとても近いので、私はやめることはできません。私は3週間学習モードに入っていて、Javaの経験はありません。これは楽しいものでしたが、Javaのものはそれを犠牲にしています。 – WmBurkert

+0

@WmBurkertそれと幸運を保つ! – Idistic