0

Code that should initialize variables a,b,c and d, !does initializes

public class BufferedReaderFromUserAnd
{
  private static final String FILENAME = "F:/Android.txt";

  public static void main(String args[]) throws IOException
  {
    BufferedWriter bw = null;
    FileWriter fw = null;

    try
    {
      fw = new FileWriter(FILENAME);
      bw = new BufferedWriter(fw);

      BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      System.out.print("Word1: ");
      String Word1 = reader.readLine();
      System.out.print("Word2: ");
      String Word2 = reader.readLine();
      System.out.print("Word3: ");
      String Word3 = reader.readLine();
      System.out.print("Word4: ");
      String Word4 = reader.readLine();
      System.out.print("Y: ");
      String y = reader.readLine();
      String a = reader.readLine();
      String b = reader.readLine();
      String c = reader.readLine();
      String d = reader.readLine();      

      if(y.compareTo(a)==0)
      {                
        b = "not" ;       
        c = "not" ;                       
        d = "not" ;       
      }                

      if(y.compareTo(B)/>/>/>==0)
      {                
        a = "not" ;       
        c = "not" ;                       
        d = "not" ;       
      }

      if(y.compareTo(c)==0)
      {                
        b = "not" ;       
        a = "not" ;                       
        d = "not" ;       
      }                

      if(y.compareTo(d)==0)
      {                
        a = "not" ;       
        c = "not" ;                       
        d = "not" ;       
      }    


      String n = reader.readLine();

      bw.write("<input type='radio' name='rbnNumber' value='You selected (a) " + Word1 + "  which is " + a +  " the correct answer' />(a) "  + Word1 + "<br/>");
      bw.write("<input type='radio' name='rbnNumber' value='You selected (a) " + Word2 + "  which is " + b +  " the correct answer' />(a) "  + Word2 + "<br/>");
      bw.write("<input type='radio' name='rbnNumber' value='You selected (a) " + Word3 + "  which is " + c +  " the correct answer' />(a) "  + Word3 + "<br/>");
      bw.write("<input type='radio' name='rbnNumber' value='You selected (a) " + Word4 + "  which is " + d +  " the correct answer' />(a) "  + Word4 + "<br/>");
    }
    catch (IOException e) {
      e.printStackTrace();
    }
    finally
    {
      try {
        if (bw != null)
          bw.close();
        if (fw != null)
          fw.close();
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
    }
  }
}

when a is entered at prompt the result is

input type='radio' name='rbnNumber' value='You selected (a) Android which is the correct answer' />(a) Android
input type='radio' name='rbnNumber' value='You selected (a) CS which is the correct answer' />(a) CS
input type='radio' name='rbnNumber' value='You selected (a) OS which is the correct answer' />(a) OS
input type='radio' name='rbnNumber' value='You selected (a) Code which is the correct answer' />(a) Code

The variables should initialize dynamically and the result espected is

input type='radio' name='rbnNumber' value='You selected (a) Android which is the correct answer' />(a) Android
input type='radio' name='rbnNumber' value='You selected (a) CS which is not the correct answer' />(a) CS
input type='radio' name='rbnNumber' value='You selected (a) OS which is not the correct answer' />(a) OS
input type='radio' name='rbnNumber' value='You selected (a) Code which is not the correct answer' />(a) Code

1 Answer 1

1

I've refracted and simplified your code and fixed the problem for you. Basically, if you are just reading and writing lines, you should consider using Scanner/PrintStream instead of Reader/Writer, since they are more convenient. Also, when you find yourself repeating code, you should move it into a separate method and then call that method with different arguments.

public class ReadOptionsFromUser {
    private static final Scanner INPUT = new Scanner(System.in);
    private static final String FILENAME = "F:/Android.txt";

    public static void main(String[] args) throws FileNotFoundException {
        try (PrintStream output = new PrintStream(FILENAME)) {
            readFromUser(output);
        }
    }

    public static void readFromUser(PrintStream output) {
        String wordA = readLine("Word (a)");
        String wordB = readLine("Word (b)");
        String wordC = readLine("Word (c)");
        String wordD = readLine("Word (d)");
        String answer = readLine("Correct letter");

        output.println(radio("a", wordA, answer));
        output.println(radio("b", wordB, answer));
        output.println(radio("c", wordC, answer));
        output.println(radio("d", wordD, answer));
    }

    private static String readLine(String prompt) {
        System.out.print(prompt + ": ");
        return INPUT.nextLine();
    }

    private static String radio(String letter, String word, String answer) {
        String option = "(" + letter + ") " + word;
        String is = letter.equals(answer) ? "is" : "is not";

        return "<input type='radio' name='rbnNumber' value='You selected " 
                + option + " which " + is +  " the correct answer' />"
                + option + "<br/>";
    }
}
Sign up to request clarification or add additional context in comments.

2 Comments

wow that was wonderful just what i wanted, how did you learn your java. i've been through tutorials ,books, videos.. but could not come up with this ty
is it possible to center align the radio buttons cause at present they are !straight

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.