Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Prompt the user to select one of four patterns

Posted on 2004-09-30
18
183 Views
Last Modified: 2010-03-31
I asked to prompt the user to select one of 4 patterns and display the pattern selected. How do I prompt the user which one to choose from, (either Pattern I or Pattern II)?

<code>


public class Pattern {
  public static void main(String[] args) {
    final int NUM_OF_LINES = 6;
   
    for (int row = 1; row <= NUM_OF_LINES; row++) {
   
      for (int num = 2; num <= row; num++)
        System.out.print(num);

        for (int column = 1; column <= NUM_OF_LINES - row; column++)
        System.out.print(" ");
       
     
      System.out.println();
    }
   
   
    for (int row = 1; row <= NUM_OF_LINES; row++) {
   
      for (int column = 1; column <= NUM_OF_LINES - row; column++)
        System.out.print(" ");

     
      for (int num = 2; num <= row; num++)
        System.out.print(num);

       
     
      System.out.println();
    }
   
  }
}
0
Comment
Question by:biloonline
  • 11
  • 5
  • 2
18 Comments
 

Author Comment

by:biloonline
ID: 12197024
for (int num = 2; num <= row; num++) should be (int num = 1; .... )
0
 
LVL 6

Expert Comment

by:expertmb
ID: 12197053
use

System.in.read()
0
 

Author Comment

by:biloonline
ID: 12197072
I know how to input an answer from the user, in my case( Pattern I, Pattern II), but how would the program know what to display, whether Pattern I or II?
0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 

Author Comment

by:biloonline
ID: 12197100
Also how can I construct a for loop to display the following pattern:
         1
       21
     321
   4321
  54321
654321


Thanks
0
 
LVL 3

Expert Comment

by:CI-Ia0s
ID: 12197115
You could also use JOptionPane.

At the top of your class file put "import javax.swing.JOptionPane;"

Code:

String inString = JOptionPane.showInputDialog("Some text to display telling the user what to enter.");

/*At this point you can just check if they entered the right string. In the "Some text to display..." area you should tell them what the possible inputs are.*/

if (inString.equals("Pattern 1")){//Do Pattern 1
}
else if (inString.equals("Pattern 2")){//Do Pattern 2
}
else if (inString.equals("Pattern 3")){//Do Pattern 3
}
else if (inString.equals("Pattern 4")){//Do Pattern 4
}
else{JOptionPane.showMessageDialog(null, "Bad input.");}
0
 

Author Comment

by:biloonline
ID: 12197117
Disregard the last question, I got it.
0
 

Author Comment

by:biloonline
ID: 12197124
CI-Ia0s,

I am asked to use:

BufferedReader stdin  = new BufferedReader (new InputStreamReader(System.in));

Thanks
0
 
LVL 6

Expert Comment

by:expertmb
ID: 12197128
int number = 0;      
try{
          number = System.in.read();
      }catch(Exception ex){
      }

if((char)number == '1'){
// first pattern
}else if((char)number == '2'){
//pattern 2
}
0
 
LVL 6

Accepted Solution

by:
expertmb earned 125 total points
ID: 12197133
public class Pattern1 {
  public static void main(String[] args) {
    System.out.println("Select Pattern 1 or 2, or 3 to exit the application");

    System.out.println("Read pattern ");

      int number = 0;
      try{
          number = System.in.read();
      }catch(Exception ex){
      }

    System.out.println("Pattern: " + (char)number);

    final int NUM_OF_LINES = 6;

          if((char)number == '1'){
            for (int row = 1; row <= NUM_OF_LINES; row++) {

              for (int num = 2; num <= row; num++)
                  System.out.print(num);

               for (int column = 1; column <= NUM_OF_LINES - row; column++)
                  System.out.print(" ");


              System.out.println();
            }
      }else if ((char)number == '2'){

            for (int row = 1; row <= NUM_OF_LINES; row++) {

              for (int column = 1; column <= NUM_OF_LINES - row; column++)
                  System.out.print(" ");


              for (int num = 2; num <= row; num++)
                  System.out.print(num);



              System.out.println();
            }
    }else if((char)number == '3'){
          System.exit(0);
    }else {
            System.out.println("Enter 1 or 2 or 3to exit");
      }

  }
}
0
 
LVL 3

Expert Comment

by:CI-Ia0s
ID: 12197142
First question: Use an if statement.

Second question:

//Declare numDigits to be the number of digits you want
int wholeNumber = 0;
int digitHolder = 1;
for (int c = 1; c < numDigits; c++){

wholeNumber = wholeNumber + (c * digitHolder);
digitHolder = digitHolder * 10;
}
0
 

Author Comment

by:biloonline
ID: 12197194
<code>

import java.io.*;


public class Pattern4 {
  public static void main(String[] args) throws IOException {
    final int NUM_OF_LINES = 6;
    int number;
   
    BufferedReader stdin  = new BufferedReader (new InputStreamReader(System.in));
    System.out.println("Select Pattern 1 or 2 or 3 or 4 or 9 to exit the application");
   
    number = stdin.readLine();
 
   
    if (number == '1')
    {
 


                for (int row = 1; row <= NUM_OF_LINES; row++) {

            for (int num = 1; num <= row; num++)
              System.out.print(num);
      
         for (int column = 1; column <= NUM_OF_LINES - row; column++)
                 System.out.print(" ");


            System.out.println();
          }
    }
   
      if (number == '2')
      {
      
      
          for (int row = 1; row <= NUM_OF_LINES; row++) {

            for (int column = 1; column <= NUM_OF_LINES - row; column++)
              System.out.print(" ");


            for (int num = row; num >= 1; num--)
              System.out.print(num);



            System.out.println();
            }
    }

      if (number == '3')
      {
      
             for (int row = 1; row <= NUM_OF_LINES; row++) {

             for (int num = 1; num < row; num++)
               System.out.print(" ");

           for (int column = 1; column <= NUM_OF_LINES - row + 1; column++)
                System.out.print(column);
            
                System.out.print(" ");
                }
                
    if (number == '4')
       {
       
           for (int row = 1; row <= NUM_OF_LINES; row++) {

                    for (int num = 1; num < row; num++)
               System.out.print(" ");

            for (int column = 1; column <= NUM_OF_LINES - row + 1; column++)
            System.out.print(column);


             System.out.println();
             }
     }
  }
}
}


</code>

This is what I have gotten so far, I am getting 1 error
E:\Program Files\Xinox Software\JCreatorV3 LE\MyProjects\Hw3Pr1\Pattern4.java:12: incompatible types
found   : java.lang.String
required: int
    number = stdin.readLine();
                           ^
1 error

Process completed.

Please advise,
Thanks
0
 

Author Comment

by:biloonline
ID: 12197203
if (number == '1')  <-- I guess that would not be right, since in this case '1' is considered as a CHAR.

How do I convert from String to Char?

0
 

Author Comment

by:biloonline
ID: 12197213
Here is an updated version, It compiled with no errors, I will run it now ...

import java.io.*;


public class Pattern4 {
  public static void main(String[] args) throws IOException {
    final int NUM_OF_LINES = 6;
   
    BufferedReader stdin  = new BufferedReader (new InputStreamReader(System.in));
    System.out.println("Select Pattern 1 or 2 or 3 or 4 or 9 to exit the application");
   
    String number = stdin.readLine();
   
    int numb = Integer.parseInt(number);
 
   
    if (numb == 1)
    {
 


                for (int row = 1; row <= NUM_OF_LINES; row++) {

            for (int num = 1; num <= row; num++)
              System.out.print(num);
      
         for (int column = 1; column <= NUM_OF_LINES - row; column++)
                 System.out.print(" ");


            System.out.println();
          }
    }
   
      if (numb == 2)
      {
      
      
          for (int row = 1; row <= NUM_OF_LINES; row++) {

            for (int column = 1; column <= NUM_OF_LINES - row; column++)
              System.out.print(" ");


            for (int num = row; num >= 1; num--)
              System.out.print(num);



            System.out.println();
            }
    }

      if (numb == 3)
      {
      
             for (int row = 1; row <= NUM_OF_LINES; row++) {

             for (int num = 1; num < row; num++)
               System.out.print(" ");

           for (int column = 1; column <= NUM_OF_LINES - row + 1; column++)
                System.out.print(column);
            
                System.out.print(" ");
                }
                
    if (numb == 4)
       {
       
           for (int row = 1; row <= NUM_OF_LINES; row++) {

                    for (int num = 1; num < row; num++)
               System.out.print(" ");

            for (int column = 1; column <= NUM_OF_LINES - row + 1; column++)
            System.out.print(column);


             System.out.println();
             }
     }
  }
}
}
0
 

Author Comment

by:biloonline
ID: 12197216
and added this at the end:

       if (numb == 9)
             return;
             

Looks like it's working fine.

Thanks guys.
0
 
LVL 6

Expert Comment

by:expertmb
ID: 12197222
if (number == '1')
should be
if ((char)number == '1')
0
 

Author Comment

by:biloonline
ID: 12197227
But I am working with Int and not Char, the program compiles and works fine.
0
 
LVL 6

Expert Comment

by:expertmb
ID: 12197359
from api
read
public abstract int read()
                  throws IOExceptionReads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.
A subclass must provide an implementation of this method.


0
 

Author Comment

by:biloonline
ID: 12197387
Thanks again.
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
HashTable highest marks enumeration alternative 9 43
servlet filter example 37 72
Why my table column Id is not passed to java object? 4 44
Running JavaFX on JDeveloper 12C 1 55
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question