Java SE 8 Programmer II Exam: Question Answer - Vehicle Class

What is the result of the given code fragment from the 1Z0-809 exam?

Question

Given the definition of the Vehicle class: Class Vehicle { int distance; Vehicle (int x) { this distance = x; } public void increSpeed(int time){ int timeTravel = time;//line n1 //line n3 class Car { int value = 0; public void speed () { value = distance /timeTravel; //line n2 System.out.println ("Velocity with new speed"+value+"kmph"); } } speed();//line n3 } } and this code fragment: Vehicle v = new Vehicle (100); v.increSpeed(60); What is the result?

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

A.

This code defines a Vehicle class with an instance variable distance and a constructor that initializes it. The class also has a method called increSpeed that takes an argument time and performs some calculations to print the velocity of a Car object. The Car class is defined inside the increSpeed method.

Let's break down the code:

java
class Vehicle { int distance; Vehicle (int x) { this.distance = x; } public void increSpeed(int time){ int timeTravel = time;//line n1 class Car { int value = 0; public void speed () { value = distance / timeTravel; //line n2 System.out.println ("Velocity with new speed" + value + "kmph"); } } speed();//line n3 } }

The increSpeed method defines a local variable timeTravel and initializes it with the value of the time argument. It then defines a local class called Car that has an instance variable value and a method called speed. The speed method calculates the velocity of the Car object using the distance and timeTravel variables, and prints the result.

The increSpeed method then calls the speed method on a Car object, and the velocity is printed to the console.

java
Vehicle v = new Vehicle(100); v.increSpeed(60);

This code creates a new Vehicle object v with a distance of 100. It then calls the increSpeed method on v with an argument of 60.

Since there are no compilation errors in the code, we can eliminate options B, C, and D.

When the increSpeed method is called with an argument of 60, it initializes the timeTravel variable to 60. It then creates a Car object and calls its speed method. The speed method calculates the velocity of the Car object as distance / timeTravel, which is 100 / 60 or approximately 1.67.

However, the value instance variable in the Car class is an int, so the fractional part is truncated, and the value of value becomes 1. The speed method then prints "Velocity with new speed1kmph" to the console.

Therefore, the correct answer is A. Velocity with new speed 1 kmph.