2017-05-30 49 views
-4

我做了2班 ScoreScoreDataSource 和我ScoreDataSource#cursorToScore(Cursor cursor)發現錯誤(紅色高亮顯示)的東西。我也不曾忘記在代碼的Java

這是我的完整代碼

首先,Score.java

public class Score { 
private int correct_listening; 
private int correct_reading; 
private int correct_structure; 
private int final_score; 
private long id; 
private int number; 
private String userName; 
private long user_id; 

public Score(int number, long user_id, int correct_listening, int correct_structure, int correct_reading, int final_score) { 
    this.number = number; 
    this.user_id = user_id; 
    this.correct_listening = correct_listening; 
    this.correct_structure = correct_structure; 
    this.correct_reading = correct_reading; 
    this.final_score = final_score; 
} 

public long getId() { 
    return this.id; 
} 

public void setId(long id) { 
    this.id = id; 
} 

public long getUser_id() { 
    return this.user_id; 
} 

public int getNumber() { 
    return this.number; 
} 

public void setNumber(int number) { 
    this.number = number; 
} 

public void setUser_id(long user_id) { 
    this.user_id = user_id; 
} 

public int getCorrect_listening() { 
    return this.correct_listening; 
} 

public void setCorrect_listening(int correct_listening) { 
    this.correct_listening = correct_listening; 
} 

public int getCorrect_structure() { 
    return this.correct_structure; 
} 

public void setCorrect_structure(int correct_structure) { 
    this.correct_structure = correct_structure; 
} 

public int getCorrect_reading() { 
    return this.correct_reading; 
} 

public void setCorrect_reading(int correct_reading) { 
    this.correct_reading = correct_reading; 
} 

public int getFinal_score() { 
    return this.final_score; 
} 

public void setFinal_score(int final_score) { 
    this.final_score = final_score; 
} 

public String getUserName() { 
    return this.userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

public String toString() { 
    return this.number + ". " + this.userName + " | " + this.correct_listening + " | " + this.correct_structure + " | " + this.correct_reading + " | " + this.final_score; 
} 

public float calculateScore(int listeningScore, int structureScore, int readingScore) { 
    return (float) Math.round((float) ((((listeningScore + structureScore) + readingScore)/3) * 10)); 
} 

}

其次,ScoreDataSource.java。 我在Score score = new Score();

public class ScoreDataSource { 
private String[] allColumns; 
private SQLiteDatabase database; 
private MySQLiteHelper dbHelper; 

public ScoreDataSource(Context context) { 
    this.allColumns = new String[]{MySQLiteHelper.USER_ID, MySQLiteHelper.SCORE_USER_ID, MySQLiteHelper.SCORE_LISTENING_CORRECT, MySQLiteHelper.SCORE_STRUCTURE_CORRECT, MySQLiteHelper.SCORE_READING_CORRECT, MySQLiteHelper.SCORE_FINAL}; 
    this.dbHelper = new MySQLiteHelper(context); 
} 

public void open() throws SQLiteException { 
    this.database = this.dbHelper.getWritableDatabase(); 
} 

public void close() { 
    this.database.close(); 
} 

public List<Score> findAll() { 
    List<Score> score = new ArrayList(); 
    Cursor cursor = this.database.query(MySQLiteHelper.TABLE_SCORE, this.allColumns, null, null, null, null, "final_score DESC"); 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     score.add(cursorToScore(cursor)); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 
    return score; 
} 

public long count() { 
    return DatabaseUtils.queryNumEntries(this.database, MySQLiteHelper.TABLE_SCORE); 
} 

public List<Score> findAll(long id) { 
    List<Score> score = new ArrayList(); 
    Cursor cursor = this.database.query(MySQLiteHelper.TABLE_SCORE, this.allColumns, "_id = " + id, null, null, null, "final_score DESC"); 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     score.add(cursorToScore(cursor)); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 
    return score; 
} 

public Score findFirst(long id) { 
    Cursor cursor = this.database.query(MySQLiteHelper.TABLE_SCORE, this.allColumns, "_id = " + id, null, null, null, null); 
    cursor.moveToFirst(); 
    Score scores = cursorToScore(cursor); 
    cursor.close(); 
    return scores; 
} 

public Score cursorToScore(Cursor cursor) { 
    Score score = new Score();//<-- error here 
    score.setId(cursor.getLong(0)); 
    score.setUser_id(cursor.getLong(1)); 
    score.setCorrect_listening(cursor.getInt(2)); 
    score.setCorrect_structure(cursor.getInt(3)); 
    score.setCorrect_reading(cursor.getInt(4)); 
    score.setFinal_score(cursor.getInt(5)); 
    return score; 
} 

public long create(Score score) { 
    return this.database.insert(MySQLiteHelper.TABLE_SCORE, null, putValuesToObject(score)); 
} 

public int update(Score score) { 
    return this.database.update(MySQLiteHelper.TABLE_SCORE, putValuesToObject(score), "_id = " + score.getId(), null); 
} 

public ContentValues putValuesToObject(Score score) { 
    ContentValues values = new ContentValues(); 
    values.put(MySQLiteHelper.SCORE_USER_ID, Long.valueOf(score.getUser_id())); 
    values.put(MySQLiteHelper.SCORE_LISTENING_CORRECT, Integer.valueOf(score.getCorrect_listening())); 
    values.put(MySQLiteHelper.SCORE_STRUCTURE_CORRECT, Integer.valueOf(score.getCorrect_structure())); 
    values.put(MySQLiteHelper.SCORE_READING_CORRECT, Integer.valueOf(score.getCorrect_reading())); 
    values.put(MySQLiteHelper.SCORE_FINAL, Integer.valueOf(score.getFinal_score())); 
    return values; 
} 

public int delete(long id) { 
    return this.database.delete(MySQLiteHelper.TABLE_SCORE, "_id = " + id, null); 
} 

public int deleteAll() { 
    return this.database.delete(MySQLiteHelper.TABLE_SCORE, "final_score > 0", null); 
} 

public void setDefaultData() { 
} 
} 
+0

你不能調用默認的構造函數,你明確地使用參數定義它 –

回答

1
Score score = new Score(); 

得到一個錯誤好吧,既然你撥打的Score類的無參數的構造函數,你應該在你Score類創建這樣的構造:

public Score() { 
    ... 
} 

它不是由編譯器生成的,因爲您定義了另一個構造函數(public Score(int number, long user_id, int correct_listening, int correct_structure, int correct_reading, int final_score) {...})。

1

你必須把這個方法太Score.java

public Score() { 

} 
0

替換此機能的研究

public Score cursorToScore(Cursor cursor) { 
    Score score = new Score();//<-- error here 
    score.setId(cursor.getLong(0)); 
    score.setUser_id(cursor.getLong(1)); 
    score.setCorrect_listening(cursor.getInt(2)); 
    score.setCorrect_structure(cursor.getInt(3)); 
    score.setCorrect_reading(cursor.getInt(4)); 
    score.setFinal_score(cursor.getInt(5)); 
    return score; 
} 

使用此功能

public Score cursorToScore(Cursor cursor) 
{ 

Score score = new Score(cursor.getLong(0),cursor.getLong(1),cursor.getInt(2),cursor.getInt(3),cursor.getInt(4),cursor.getInt(5));//<-- error here 

return score; 

} 
0

的構造方法定義瞭如何組成一個類的對象。

如果一個類沒有構造函數的所有屬性定義,則是隱式生成默認的無參數的構造函數,它會分配默認值(字符串,0 null作爲原始int和長等)

一旦爲一個類明確定義了一個構造函數,那麼默認的無參數構造函數將不復存在。你必須明確地定義一個無參數的構造函數,如果你想複製默認的無參數的構造函數機制

public Score() {  
}