[Java] Class and Driver Class help

  • Context: Java 
  • Thread starter Thread starter redskins21
  • Start date Start date
  • Tags Tags
    Class Java
Click For Summary
SUMMARY

The discussion focuses on a Java programming issue related to the implementation of the `Automobile` and `AutomobileDriver` classes. The primary error identified is the incorrect invocation of the `setMake()` method without a required String argument, leading to a compilation error. Additionally, there are logical errors in the input validation checks within the `setMake` and `setColor` methods, specifically the misuse of the logical operators and incorrect character checks. The suggested fixes include removing the unused parameter `makeType` and replacing the logical OR operator with the logical AND operator in the validation conditions.

PREREQUISITES
  • Understanding of Java programming concepts
  • Familiarity with method definitions and parameter usage in Java
  • Knowledge of input validation techniques in Java
  • Experience with logical operators in programming
NEXT STEPS
  • Review Java method overloading and parameter passing
  • Learn about input validation best practices in Java
  • Study logical operators and their correct usage in conditional statements
  • Explore debugging techniques for Java applications
USEFUL FOR

Java developers, programming students, and anyone troubleshooting Java class implementations and input validation issues.

redskins21
Messages
1
Reaction score
0
Hello,

I am trying to figure out what I did wrong and I couldn't figure it out.

here is the error code:
setMake(java.lang.String) in Automobile cannot be applied to ().

Class file:

import java.util.Scanner;

public class Automobile
{
private int num; //number of automobiles to describe
private String make; //make of automobile
private String color; //color of automobile

public void setIteration()
{
Scanner stdIn = new Scanner(System.in);
System.out.print("How many cars do you want to consider: ");
this.num = stdIn.nextInt();

this.make = setMake("body");
this.color = setColor("paint");
}//end constructor


public void printColor()
{
System.out.println(this.color);
}

public void printMake()
{
System.out.println(this.make);
}

private String setMake(String makeType)
{
Scanner stdIn = new Scanner(System.in);
String make;

do
{
System.out.print("Select Buick, Chevrolet, or Pontiac (b,c,p): ");
make = stdIn.nextLine();

if (make.charAt(0) != 'b' || make.charAt(0) != 'g' || make.charAt(0) != 'p');

else
System.out.print("The only valid selections are 'b', 'c', or 'p'");


} while (!make.equals("b") && !make.equals("c") && !make.equals("p"));


switch (make.charAt(0))
{
case 'b':
make = "Buick";
break;
case 'c':
make = "Chevrolet";
break;
case 'p':
make = "Pontiac";
}//end switch

return make;
}//end setMake

private String setColor(String colorType)
{
Scanner stdIn = new Scanner(System.in);
String color;

do
{
System.out.print("Select Blue, Green, or Red(b,g,r): ");
color = stdIn.nextLine();


if (make.charAt(0) != 'b' || make.charAt(0) != 'g' || make.charAt(0) != 'r');

else
System.out.print("The only valid selections are 'b', 'c', or 'r'");



} while (!make.equals("b") && !make.equals("g") && !make.equals("r")) ;



switch (make.charAt(0))
{
case 'b':
make = "Blue";
break;
case 'g':
make = "Green";
break;
case 'r':
make = "Red";
}//end switch

return color;
}//end setColor
}//end class Automobile


Driver Class:

import java.util.Scanner;

public class AutomobileDriver
{
public static void main(String[] args)
{
Automobile car = new Automobile();



car.setIteration();
car.setMake();
car.setColor();
car.printColor();
car.printMake();

}//end main
}//end driverClass


SAMPLE DISPLAY:

How many cars do you want to consider? 2
Select Buick, Chevrolet, or Pontiac (b,c,p): x
The only valid selections are 'b', 'c', or 'p'
Select Buick, Chevrolet, or Pontiac (b,c,p): p
Select blue, green, or red (b,g,r): r
red Pontiac
Select Buick, Chevrolet, or Pontiac (b,c,p): c
Select blue, green, or red (b,g,r): g
green Chevrolet


THANKS!
 
Technology news on Phys.org


The message means what it says. You declared
Code:
private String setMake(String makeType)
and then tried to call
Code:
setMake()
without a String argument.

You don't seem to use makeType for anything, so maybe it shouldn't be there.
 


You have a typo in your setMake definition.
Code:
private String setMake(String makeType)
{
   Scanner stdIn = new Scanner(System.in);
   String make;

   do
   {
      System.out.print("Select Buick, Chevrolet, or Pontiac (b,c,p): ");
      make = stdIn.nextLine();

      if (make.charAt(0) != 'b' || make.charAt(0) != 'g'[/color] || make.charAt(0) != 'p');

      else
         System.out.print("The only valid selections are 'b', 'c', or 'p'");
      ...
Where I have marked the code with red you should be checking for the character 'c', not 'g'.

More serious is your logic error in the if statement above. See what you get if the user types 'b' and again if the user types one of the letters not listed. You don't want to be using the logical or operator - you should be using the logical and operator - &&.

Also note that if your compound condition in the if statement turns out to be true, nothing happens!
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
2
Views
3K
Replies
1
Views
8K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
4
Views
3K
  • · Replies 3 ·
Replies
3
Views
10K
  • · Replies 19 ·
Replies
19
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
3
Views
6K