Java [Java] Class and Driver Class help

  • Thread starter Thread starter redskins21
  • Start date Start date
  • Tags Tags
    Class Java
AI Thread Summary
The discussion centers around a coding issue in a Java class called `Automobile`, specifically regarding an error message indicating that the method `setMake()` cannot be called without a string argument. The user is trying to understand the source of this error. Key points include that the method `setMake(String makeType)` is defined to require a string parameter, but it is called without any arguments in the `AutomobileDriver` class. Additionally, there are identified typos and logical errors in the `setMake` and `setColor` methods, such as incorrect character checks and the use of the logical OR operator instead of AND in conditional statements. The discussion emphasizes the need to correct these issues to ensure proper functionality of the code.
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!
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I had a Microsoft Technical interview this past Friday, the question I was asked was this : How do you find the middle value for a dataset that is too big to fit in RAM? I was not able to figure this out during the interview, but I have been look in this all weekend and I read something online that said it can be done at O(N) using something called the counting sort histogram algorithm ( I did not learn that in my advanced data structures and algorithms class). I have watched some youtube...
Back
Top