Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Help! I can get the first GUI to pop up but not anything else. Can you tell me w

ID: 3926544 • Letter: H

Question

Help! I can get the first GUI to pop up but not anything else. Can you tell me where my code is wrong.

import java.util.Scanner;
import javax.swing.*;


public class Automobile {
   private String make; //Make of the AutoMobile
   private String color; //Color of the vehicle
   //to read input from the keyboard
   private java.util.Scanner scan= new java.util.Scanner(System.in);

   //prompts and gets the input from the user
   public void setMake(){
       JOptionPane.showInputDialog("Select Buick, Chevrolet, or Pontiac (b,c,p): ");
   char ch = (scan.next()).charAt(0);
   //input validation checking
   while(ch != 'b' && ch != 'c' && ch !='p'){
       JOptionPane.showMessageDialog(null,"The only valid selections are 'b', 'c', or 'p'");
       JOptionPane.showInputDialog("Select Buick, Chevrolet, or Pontiac (b,c,p): ");
   ch = (scan.next()).charAt(0);
   }
     
   switch(ch){
   case 'p':make="Pontiac"; break;
   case 'b':make="Buick";break;
   case 'c':make="Chevrolet";
   }
   }
public void setColor(){
   JOptionPane.showInputDialog("Select blue, green, or red (b,g,r): ");
char ch = (scan.next()).charAt(0);

while(ch != 'b' && ch != 'g' && ch !='r'){
   JOptionPane.showMessageDialog(null,"The only valid selections are 'b', 'g', or 'r'");
   JOptionPane.showInputDialog("Select blue, green, or red (b,g,r): ");
ch = (scan.next()).charAt(0);
}

switch(ch){
case 'b':color="blue"; break;
case 'g':color="green";break;
case 'r':color="red";
}
}
//prints the make
public String printMake(){
return make;
}
//prints the color
public String printColor(){
return color;
}
}

//Driver.java

import javax.swing.*;   

public class Driver {
   //main method
   @SuppressWarnings("resource")
       public static void main(String args[]){
   java.util.Scanner keyin=new java.util.Scanner(System.in);
   Automobile auto = new Automobile(); //AutoMobile object

   JOptionPane.showInputDialog("How many cars do you want to consider? ");
   int num=keyin.nextInt();
   for(int i=0;i<num;i++){
   auto.setMake();
   auto.setColor();
   JOptionPane.showMessageDialog(null, auto.printColor()+" "+auto.printMake());
   }
   }
   }
  

Explanation / Answer

You should not use Scanner class that is used for getting input from console.

Below are the changes inputDialogBox returns a string and you need to parse that string to a variable.

import java.util.Scanner;
import javax.swing.*;

public class Automobile {
private String make; //Make of the AutoMobile
private String color; //Color of the vehicle
//to read input from the keyboard
private java.util.Scanner scan= new java.util.Scanner(System.in);
//prompts and gets the input from the user
public void setMake(){
String selection = JOptionPane.showInputDialog("Select Buick, Chevrolet, or Pontiac (b,c,p): ");
char ch = selection.charAt(0);

//input validation checking
while(ch != 'b' && ch != 'c' && ch !='p'){
JOptionPane.showMessageDialog(null,"The only valid selections are 'b', 'c', or 'p'");
selection = JOptionPane.showInputDialog("Select Buick, Chevrolet, or Pontiac (b,c,p): ");
ch = selection.charAt(0);

}

switch(ch){
case 'p':make="Pontiac"; break;
case 'b':make="Buick";break;
case 'c':make="Chevrolet";
}
}
public void setColor(){
String selection = JOptionPane.showInputDialog("Select blue, green, or red (b,g,r): ");
char ch = selection.charAt(0);

while(ch != 'b' && ch != 'g' && ch !='r'){
JOptionPane.showMessageDialog(null,"The only valid selections are 'b', 'g', or 'r'");
selection = JOptionPane.showInputDialog("Select blue, green, or red (b,g,r): ");
ch = selection.charAt(0);

}
switch(ch){
case 'b':color="blue"; break;
case 'g':color="green";break;
case 'r':color="red";
}
}
//prints the make
public String printMake(){
return make;
}
//prints the color
public String printColor(){
return color;
}
}

import javax.swing.*;   
public class Driver {
//main method
@SuppressWarnings("resource")
public static void main(String args[]){
java.util.Scanner keyin=new java.util.Scanner(System.in);
Automobile auto = new Automobile(); //AutoMobile object
int num = Integer.parseInt(JOptionPane.showInputDialog("How many cars do you want to consider? "));
for(int i=0;i<num;i++){
auto.setMake();
auto.setColor();
JOptionPane.showMessageDialog(null, auto.printColor()+" "+auto.printMake());
}
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote