2017-03-05 31 views
0

我打算檢查紡紗廠,以確保他們沒有選擇相同的物品。檢查紡紗廠,以防止他們選擇相同的物品

還有我的代碼

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:orientation="vertical" 
android:layout_height="fill_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/StudentName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Please select Course and Grade" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="1" > 

     <Spinner 
      android:id="@+id/SpinnerC1" 
      android:layout_width="221dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.7" 
      android:entries="@array/course"/> 

     <Spinner 
      android:id="@+id/SpinnerG1" 
      android:layout_width="83dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.3" 
      android:entries="@array/grade" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="1" > 

     <Spinner 
      android:id="@+id/SpinnerC2" 
      android:layout_width="221dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.7" 
      android:entries="@array/course"/> 

     <Spinner 
      android:id="@+id/SpinnerG2" 
      android:layout_width="83dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.3" 
      android:entries="@array/grade"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="1" > 

     <Spinner 
      android:id="@+id/SpinnerC3" 
      android:layout_width="221dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.7" 
      android:entries="@array/course" /> 

     <Spinner 
      android:id="@+id/SpinnerG3" 
      android:layout_width="83dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.3" 
      android:entries="@array/grade"/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="1" > 

     <Spinner 
      android:id="@+id/SpinnerC4" 
      android:layout_width="221dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.7" 
      android:entries="@array/course"/> 

     <Spinner 
      android:id="@+id/SpinnerG4" 
      android:layout_width="83dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.3" 
      android:entries="@array/grade"/> 
    </LinearLayout> 

    <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_gravity="bottom|center" 
      android:weightSum="1" 
     > 

    <Spinner 
     android:id="@+id/SpinnerC5" 
     android:layout_width="221dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.7" 
     android:entries="@array/course"/> 

    <Spinner 
     android:id="@+id/SpinnerG5" 
     android:layout_width="83dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.3" 
     android:entries="@array/grade"/> 

     </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center" 
     android:orientation="horizontal" > 

     <Spinner 
      android:id="@+id/SpinnerC6" 
      android:layout_width="221dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.7" 
      android:entries="@array/course"/> 

     <Spinner 
      android:id="@+id/SpinnerG6" 
      android:layout_width="83dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.3" 
      android:entries="@array/grade"/> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Calculate GPA" 
      android:onClick="calculateGPA" /> 


    </LinearLayout> 

</LinearLayout> 

,然後該網頁的我的整個Java代碼將

package com.example.gpapredict; 

import java.text.DecimalFormat; 
import java.util.ArrayList; 

import android.support.v7.app.ActionBarActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 


public class Selection extends ActionBarActivity { 
    String stuName,stuId, gpaScore, defCourse,gradeA,gradeB,gradeC,gradeD,gradeF,gradeG; 
    ArrayList<String> check; 
    double cor,score,gpa=999; 
    TextView tvName; 
    Intent i2; 
    Spinner SpinnerC1, SpinnerC2, SpinnerC3, SpinnerC4, SpinnerC5, SpinnerC6, SpinnerG1, SpinnerG2, SpinnerG3, SpinnerG4, SpinnerG5, SpinnerG6; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_selection); 
     stuName = getIntent().getStringExtra("name"); 
     stuId = getIntent().getStringExtra("stuId"); 
     tvName = (TextView)findViewById(R.id.StudentName); 
     tvName.setText("Hi," + stuName); 
    } 

    public void calculateGPA(View v){ 
     //retrieve data from spinners 
     SpinnerC1 = (Spinner)findViewById(R.id.SpinnerC1); 
     SpinnerC2 = (Spinner)findViewById(R.id.SpinnerC2); 
     SpinnerC3 = (Spinner)findViewById(R.id.SpinnerC3); 
     SpinnerC4 = (Spinner)findViewById(R.id.SpinnerC4); 
     SpinnerC5 = (Spinner)findViewById(R.id.SpinnerC5); 
     SpinnerC6 = (Spinner)findViewById(R.id.SpinnerC6); 
     SpinnerG1 = (Spinner)findViewById(R.id.SpinnerG1); 
     SpinnerG2 = (Spinner)findViewById(R.id.SpinnerG2); 
     SpinnerG3 = (Spinner)findViewById(R.id.SpinnerG3); 
     SpinnerG4 = (Spinner)findViewById(R.id.SpinnerG4); 
     SpinnerG5 = (Spinner)findViewById(R.id.SpinnerG5); 
     SpinnerG6 = (Spinner)findViewById(R.id.SpinnerG6); 

     //save the data into string type 
     String[] course = new String[6]; 
     String[] grade = new String[6]; 
     course[0] = SpinnerC1.getSelectedItem().toString(); 
     course[1] = SpinnerC2.getSelectedItem().toString(); 
     course[2] = SpinnerC3.getSelectedItem().toString(); 
     course[3] = SpinnerC4.getSelectedItem().toString(); 
     course[4] = SpinnerC5.getSelectedItem().toString(); 
     course[5] = SpinnerC6.getSelectedItem().toString(); 
     grade[0] = SpinnerG1.getSelectedItem().toString(); 
     grade[1] = SpinnerG2.getSelectedItem().toString(); 
     grade[2] = SpinnerG3.getSelectedItem().toString(); 
     grade[3] = SpinnerG4.getSelectedItem().toString(); 
     grade[4] = SpinnerG5.getSelectedItem().toString(); 
     grade[5] = SpinnerG6.getSelectedItem().toString(); 

     //check for no same course 
     defCourse = "Select Course"; 
     check = new ArrayList<String>(); 
     check.add(course[0]); 

     for (String checkCourse:check){  
      for (int c=1;c<6;c++){ 
      if (checkCourse.equals(course[1])){ 
        Toast.makeText(getApplicationContext(), "Cannot Proceed : Same course is selected", Toast.LENGTH_LONG).show(); 
        return; 
       } 
       else if(course[c].equals(defCourse)) { 
        continue; 
       }else { 
        check.add(course[c]); 
        break; 
       } 
      }       
     } 




     //calculate score 
     gradeA="A"; 
     gradeB="B"; 
     gradeC="C"; 
     gradeD="D"; 
     gradeF="F"; 
     gradeG="G"; 
     //initialize value 
     score = 0.0; 
     cor=0.0; 
     for (int i=0;i<6;i++){ 
      if(grade[i].equals(gradeA)){ 
       score = score + 4.0; 
       cor++; 
      }else 
      if (grade[i].equals(gradeB)){ 
       score = score + 3.0; 
       cor++; 
      }else 
      if (grade[i].equals(gradeC)){ 
       score = score + 2.0; 
       cor++; 
      }else 
      if (grade[i].equals(gradeD)){ 
       score = score + 1.0; 
       cor++; 
      }else 
      if (grade[i].equals(gradeF)){ 
       score = score+0.0; 
       cor++; 
      }else{ 
       score = score +0.0; 
      }  
     } 
     if (cor == 0.0){ 
      cor++; 
     } 
     gpa = score/cor; 
     //set precision to 2 decimal places 
     DecimalFormat dec = new DecimalFormat("#0.00"); 
     gpaScore = String.valueOf(dec.format(gpa)); 

     Toast.makeText(getApplicationContext(), "okay", Toast.LENGTH_LONG).show(); 

     i2 = new Intent(Selection.this,Result.class); 
     i2.putExtra("stuName",stuName); 
     i2.putExtra("stuId",stuId); 
     i2.putExtra("courseArray", course); 
     i2.putExtra("gradeArray", grade); 
     i2.putExtra("gpa", gpaScore); 
     startActivity(i2); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.selection, 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(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

由於鏈路的限制,我可以張貼,生病顯示我的接口和錯誤消息在其他圖像。

現在我的應用程序能夠在將其他spinners的值與第一個微調器的值進行比較時顯示用戶錯誤。因爲我的應用程序發現第一個和第二個微調選擇相同的課程。它如圖所示。

Result that i get

如果第二微調的值是從第一個不同,但與第三微調的值相同,則應用程序允許進入下一頁。這不是我想要的。我希望我的應用程序能夠確保用戶不會從旋轉器中選擇相同的主題。

此圖顯示用戶在第二個微調框和第三個微調框中選擇相同的菜單的結果。我不希望它是。

Result of 2nd spinner and third spinner have the same value.

再次你的幫助是非常讚賞,如果我的解釋仍然不夠清晰,我哭解釋甚至更多的細節。

回答

0

在我看來,點擊繼續按鈕,你應該有一個選擇值爲spinners的數組列表,然後檢查數組列表是否有重複值。試試下面的代碼:

//check for no same course 
    defCourse = "Select Course"; 
    ArrayList check = new ArrayList<String>(); 
    check.add(defCourse); 

     for (int c=0;c<6;c++){ 
      if (!check.contains(course[c])) { 
       check.add(course[c]); 
      }else{ 
       Toast.makeText(getApplicationContext(), "Cannot Proceed : Same course is selected", Toast.LENGTH_LONG).show(); 
      } 
     }       
+0

感謝您的幫助。但是我必須選擇6門課程。即使用戶只選擇三個主題,如果我希望我的申請繼續進行下一個活動,該怎麼辦? –

+0

Nvm,我已經解決了我的問題。 –

0

嗯,我發現我的解決方案

// check for no same course 
     defCourse = "Select course"; 
     check = new ArrayList<String>(); 
     check.add(course[0]); 

     for (int c = 1; c < 6; c++) { 
      if (check.contains(course[c])) { 
       Toast.makeText(getApplicationContext(), 
         "Cannot Proceed : Same course is selected", 
         Toast.LENGTH_LONG).show(); 
       return; 
      } else if (course[c].equals(defCourse)) { 
       continue; 
      } else { 
       check.add(course[c]); 
      } 
     } 

感謝您的幫助:)