2013-05-05 2 views
0

У меня возникла проблема с заменой моей строки.Заполнить пробел

Это метод класса вопросов.

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)); 
    } 
} 
} 

Из того, что я понимаю, я заменить [подчеркивание] 4 [подчеркивание] с 5х [ подчеркивание], это похоже на заполнение заготовки, я храню 4. и заменяю часть строки на _ __ _ _. Unfortado, это мой результат. Я думаю, что моя логика правильная, но я понятия не имею, почему мое возвращение не то, что я ожидал.

+0

Что вы пытаетесь заменить? – Blender

+0

_4_ с _____ только эта часть строки – Michael

+1

Вы возвращаете 'temp', который не был изменен ...' temp' in, 'temp' out, без изменений .... – MadProgrammer

ответ

2

Просто делать все это сразу:

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

Он заменяет один или несколько символов подчеркивания следуют одна или несколько цифр следует один или более символов подчеркивания с пятью символами подчеркивания.

+0

Это не работает, я понимаю, что вы делаете. Он просто не возвращается правильно, может быть, это что-то еще, что я делаю неправильно ... – Michael

+0

Что вы возвращаете? '.replaceAll' не изменяет исходную строку. – Blender

+0

Я возвращаюсь темп, но более ранний madprogrammer сказал, что мое возвращение было неправильным, поэтому я пытаюсь понять это сейчас. – Michael

Смежные вопросы