填空

时间:2013-05-05 06:04:43

标签: java string replace

我在更换字符串时遇到问题。

这是Question类方法。

public class Question
{
private String text;
private String answer;

/**
Constructs a question with empty question and answer.
 */
public Question(String qText) 
{
    text = qText;
    answer = "";
}

/**
Sets the answer for this question.
@param correctResponse the answer
 */
public void setAnswer(String correctResponse)
{
    answer = correctResponse;
}

/**
Checks a given response for correctness.
@param response the response to check
@return true if the response was correct, false otherwise
 */
public boolean checkAnswer(String response)
{
    return response.equals(answer);
}

/**
Displays this question.
 */
public void display()
{
    System.out.println(text);
}
}

这是我的方法

This is my blankQuestions class

import java.util.ArrayList;  


public class BlankQuestion extends Question {  

public BlankQuestion(String qText) {   
    return qText.replaceAll("_+\\d+_+", "_____");


    String tempSplit[] = questionText.split("_");  
    setAnswer(tempSplit[1]);  

}  
public void setAnswer(String correctChoice){  
    super.setAnswer( correctChoice );  

}  

@Override  
public boolean checkAnswer (String response){  
    return super.checkAnswer(response);  

}  

public String toString(){  
    return super.toString();  
}  


}  

这是我的主要课程

import java.util.Scanner;  

public class QuestionDemo  
{  
public static void main(String[] args)  
{  
  Question[] quiz = new Question[2];  

  BlankQuestion question0 = new BlankQuestion(  
     "2 + 2 = _4_");  
  quiz[0] = question0;  

  BlankQuestion question1 = new BlankQuestion(  
     "The color of the sky is _blue_.");  
  quiz[1] = question1;  

  Scanner in = new Scanner(System.in);  
  for (Question q : quiz)  
  {  
     q.display();  
     System.out.println("Your answer: ");  
     String response = in.nextLine();  
     System.out.println(q.checkAnswer(response));  
  }  
}  
}  

根据我的理解,我用5x [下划线]替换[下划线] 4 [下划线],这类似于填空,我存储4.并用替换字符串的一部分 _ __ _ _ 即可。不幸的是,这是我的结果。我认为我的逻辑是正确的,但我不知道为什么我的回报不符合我的预期。

1 个答案:

答案 0 :(得分:2)

一下子就这么做:

return qText.replaceAll("_+\\d+_+", "_____");

它替换一个或多个下划线,后跟一个或多个数字,后跟一个或多个带有五个下划线的下划线。