本人新手 想写个“谁是卧底”游戏的小程序 刚写一点就出现各种错误,,目测不是文件流方面问题就是数据出现问题,,调试半天无果 。。现附上代码,,求大神指导,,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
和尚/喇嘛/僧侣
大海/天空/草原
加多宝/王老吉/和其正
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
和尚/喇嘛/僧侣
大海/天空/草原
加多宝/王老吉/和其正
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货