[Java] Class and Driver Class help

  • Java
  • Thread starter redskins21
  • Start date
  • Tags
    Class Java
In summary: You're trying to execute two different code blocks based on a single condition that might not even be true. You might want to rethink your if statement.
  • #1
redskins21
1
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
  • #2


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.
 
  • #3


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) != [color="red"]'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!
 

Related to [Java] Class and Driver Class help

1. What is a Java Class?

A Java Class is a template or blueprint that defines the characteristics and behaviors of objects in a Java program. It contains variables, methods, and constructors that are used to create and manipulate objects.

2. What is the purpose of a Driver Class?

A Driver Class is a class that contains the main method of a Java program. Its purpose is to act as an entry point for the program and to initialize and call methods from other classes.

3. How do I create a Java Class?

To create a Java Class, you can use an Integrated Development Environment (IDE) such as Eclipse or NetBeans. Alternatively, you can use a text editor to write the code and then compile it using the Java compiler.

4. Can a Java Class have multiple constructors?

Yes, a Java Class can have multiple constructors. Constructors are used to initialize the state of an object, and having multiple constructors allows for different ways of creating and initializing objects.

5. What is the difference between a Class and an Object in Java?

A Class is a template or blueprint that defines the structure and behavior of objects, while an Object is an instance of a Class. In other words, a Class is like a recipe and an Object is the dish that is created from that recipe.

Similar threads

  • Programming and Computer Science
Replies
2
Views
2K
  • Programming and Computer Science
Replies
2
Views
2K
  • Programming and Computer Science
Replies
2
Views
2K
  • Programming and Computer Science
Replies
1
Views
7K
  • Programming and Computer Science
Replies
4
Views
2K
  • Programming and Computer Science
3
Replies
75
Views
4K
  • Programming and Computer Science
Replies
3
Views
10K
  • Programming and Computer Science
Replies
2
Views
3K
  • Programming and Computer Science
Replies
19
Views
2K
  • Programming and Computer Science
Replies
5
Views
886
Back
Top