本人新手  想写个“谁是卧底”游戏的小程序  刚写一点就出现各种错误,,目测不是文件流方面问题就是数据出现问题,,调试半天无果   。。现附上代码,,求大神指导,,package com.example.findx;import java.util.Random;public class Word {
   public String word;
   public String xword;
   
   
   public Word(WordsDbAdapter dbHelper){
//    获得词组总数
   int num = dbHelper.getsize();
   System.out.print("3");
//    通过产生随机数获取id
   Random random = new Random();
   long id = (long)random.nextInt(num);
   System.out.print(id);
//    通过id获得词组
   String words[] = dbHelper.get(id);
//    随机设置好人词与卧底词
   int a = random.nextInt(3);
   int x = a;
   while (a==x)
   x = random.nextInt(3);
   word = words[a];
   xword = words[x];
   }
}
package com.example.findx;import java.io.InputStream;
import java.util.ArrayList;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class WordsDbAdapter {
private static final String DATABASE_NAME= "words.db"; 
private static final  int DAATABASE_VERSION = 1;
private static final String DATABASE_TABLE = "words";
private static final String CREATE = "create table words(_id integer primary key, aword text, bword text, cword text)";

private  Context ctx = null;
private DbHelper dbHelper;
private SQLiteDatabase db;
public static InputStream is ;

public static final String AWORD = "aword";
public static final String BWORD = "bword";
public static final String CWORD = "cword";
public static final String ID = "_id";

public WordsDbAdapter(Context ctx,InputStream is){
this.ctx = ctx;
this.is = is;
}


public WordsDbAdapter open() throws SQLException{
dbHelper = new DbHelper(ctx);
db = dbHelper.getWritableDatabase();
return this;
}

public void close(){
dbHelper.close();
}
public int getsize(){
return db.query(DATABASE_TABLE, new String[]{ID}, null, null, null, null, null).getCount();
}

public void add(String aword,String bword,String cword){
ContentValues cv = new ContentValues();
cv.put(AWORD, aword);
cv.put(BWORD, bword);
cv.put(CWORD,cword);
db.insert(DATABASE_TABLE, null, cv);
}

public void delete(long id){
db.delete(DATABASE_TABLE, "_id ="+id, null);
}

public String[] get(long id){
Cursor cursor = db.query(DATABASE_TABLE, new String[]{AWORD,BWORD,CWORD}, "_id ="+id,null, null, null, null);

String[] str = new String[3];
if(cursor!=null)
cursor.moveToFirst();
str[0] = cursor.getString(cursor.getColumnIndexOrThrow(AWORD));
str[1] = cursor.getString(cursor.getColumnIndexOrThrow(BWORD));
str[2] = cursor.getString(cursor.getColumnIndexOrThrow(CWORD));
return str;
}

private static class DbHelper extends SQLiteOpenHelper{ public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DAATABASE_VERSION);
// TODO Auto-generated constructor stub

} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE);
System.out.print("3");
load(db);
System.out.print("2");

}
private void load(SQLiteDatabase db){
MyFile mf = new MyFile(is);
ArrayList<String> array = mf.words;
System.out.print("4");
for(int i=0;i<array.size();i++){
String[] word = array.get(i).split("/");
ContentValues cv = new ContentValues();
cv.put("aword", word[0]);
cv.put("bword", word[1]);
cv.put("cword", word[2]);
db.insert(DATABASE_TABLE, null, cv);


}

}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXIST" +DATABASE_TABLE);
onCreate(db);
}

}
}
package com.example.findx;import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;public class MyFile {
public  ArrayList<String> words = new ArrayList<String>();
public MyFile(InputStream is){

try{
BufferedReader br = new BufferedReader(new InputStreamReader(is,"gbk"),512);
System.out.print("1");
String word = null;

while ((word = br.readLine()) != null)
words.add(word);

}catch(IOException ioe){
System.err.println("加载文件失败。");
}finally{
try{
if(is != null){
is.close();
is = null;
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}wods
package com.example.findx;import java.io.IOException;
import java.io.InputStream;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity {
private Button btn_send;
private TextView tv1;
private TextView tv2;
   private WordsDbAdapter dbHelper;
   private InputStream is ;
       @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btn_send = (Button)findViewById(R.id.btn_send);
        tv1 = (TextView)findViewById(R.id.tv1);
        tv2 = (TextView)findViewById(R.id.tv2);
        
           try {
is  = getAssets().open("words.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
           
        btn_send.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
sendWord();
}
});
    }
    private void sendWord(){
     dbHelper = new WordsDbAdapter(this,is);
     dbHelper.open();
     Word w = new Word(dbHelper);
     tv1.setText("好人词是   "+w.word);
     tv2.setText("卧底词是   "+w.xword);
    
    }
}
word.txt内容人人/QQ/YY
和尚/喇嘛/僧侣
大海/天空/草原
加多宝/王老吉/和其正

解决方案 »

  1.   

    用adb发现数据库表格里没内容 ,,是什么原因?
      

  2.   

    private void load(SQLiteDatabase db){            MyFile mf = new MyFile(is);            ArrayList<String> array = mf.words;你需确认你获得的array是否正确
      

  3.   

    出现什么错误在LogCat当中有提示,楼主应该学会看LogCat,里面指出的错误不懂的话可以去问别人或者去百度