2016-10-05 18 views
0

別のString ArrayListから文字列ArrayListを作成する必要があります。データは、BufferedReaderによって読み取られる.txtファイルから取得されます。このアプリは、ユーザーが学生の名前を選択し、その成績を計算し、それを表示できるスピナーを表示することになっています。今の最大のハードルは、.splitを使用しようとするとnullポインタ例外が発生するということです。ご存知のように、私はこれをかなり新しくしていますし、何か助けてもらえます。ありがとう!文字列を分割して別の文字列arraylistから文字列arraylistを作成する

grades.txt

Name   Test1 Test2 Test3 Final 
Adam Anderson 81 90 85 87 
Ben Brown  77 80 68 94 
Chris Cross  74 80 56 62 
Don Dare  86 94 90 89 
Eric Earl  96 93 90 98 
Fred Foley  79 92 59 86 
Gina Gray  80 83 95 87 
Holly Hank  74 77 75 78 
Ian Ingram  66 64 56 60 
Jill Johnson  90 98 78 89  

Javaコード

public class MainActivity extends AppCompatActivity { 

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

    String strName, strLastName, strFirstName, strFinalGrade; 

    int intTest1, intTest2, intTest3, intFinal, intFinalGrade; 

    int intPointsPossible = 400; 

    int finalGrades[] = new int[0]; 

    AssetManager am = getAssets(); 
    ArrayList<String> list = new ArrayList<String>(); 
    ArrayList<String> finalList = finalList = new ArrayList<String>(); 
      BufferedReader reader; 
    String line = " "; 
    String item = " "; 

    try { 
     InputStream input = am.open("grades.txt"); 
     reader = new BufferedReader(new InputStreamReader(input)); 

     while (line != null){ 
      line = reader.readLine(); 
      list.add(line); 

     } 
     while (item != null){ 
      for (int i = 0; i < list.size(); i++){ 
       line.split("\\s+"); 
       finalList.add(item); 
      } 
     } 

     input.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 




    Spinner spinner = new Spinner(this); 

    ArrayAdapter<String> dataAdapter = 
      new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); 

    spinner.setAdapter(dataAdapter); 

    dataAdapter.notifyDataSetChanged(); 

}} 
+0

'line.split(「\\ S +」であるスピナーを取得するためにfindViewByIdを使用する必要があります...あなたのXMLレイアウトから来ていません); 'は' String [] 'を返します。あなたはそれで何かをしていますか? –

+0

'while(item!= null)' ...これは無限ループです –

答えて

1

最大のハードルは、今私が

を.split使用しようとすると、私は、nullポインタ例外を取得するということです

実行中ですwhile (line != null){

これは、このループを停止するために、linenullになることを意味します。

finalListにあなたができるaddAllリストを取得するにはArrays.asList(line.split("\\s+")することができます、のは、とにかく

ArrayList<String> finalList = finalList = new ArrayList<String>(); 

....これはタイプミスであると仮定しましょう。

BufferedReader reader; 

try { 
    InputStream input = am.open("grades.txt"); 
    reader = new BufferedReader(new InputStreamReader(input)); 
    String line; 

    while ((line = reader.readLine()) != null) { 
     String[] parts = line.split("\\s+"); 
     finalList.addAll(Arrays.asList(parts)); 
    } 

    input.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if (reader != null) reader.close(); 
} 

現実的には、私はあなたが望むものだとは思わないが、

ので、このアプリは、おそらく、ユーザーが自分の成績を計算する学生の名前を選択することができ、そこからスピナーを表示し、同様に

各行はStudentオブジェクトに解析されなければならないことを表示するようになっています、その後、finalListは、その後、あなたが学生の名前のみを表示するようにカスタマイズすることができArrayAdapter<Student>が必要List<Student>

public class Student { 
    String firstName, lastName; 
    int test1, test2, test3, final; // or List<Integer> tests; 
} 

することができます。

次に、アクティビティのグレードを計算して表示するには、Spinnerにアイテム選択リスナーが必要です。

これらは別の問題ですが、新しい質問を投稿する必要があります。


その後、あなたはSpinner spinner = new Spinner(this);を持っていますが、このスピナーは、多分あなたは

+0

ありがとうございました!少なくとも今私は方向性がある! – lruff685

関連する問題