
OPA May8 Java
Create a class Player with below attributes:
playerId - int
skill - String
level - String
points - int
Write getters, setters and parameterized constructor in the above mentioned attribute sequence as required.
Create class Solution with the main method.
Implement two static methods - findPointsForGivenSkill and getPlayerBasedOnLevel in Solution class.
findPointsForGivenSkill method:
This method will take two input parameters - array of Player objects and string parameter skill.
The method will return the sum of the points attribute from player objects for the skill passed as parameter.
If no player with the given skill is present in the array of player objects, then the method should return 0.
getPlayerBasedOnLevel method:
This method will take two String parameters level and skill, along with the array of Player objects.
The method will return the player object, if the input String parameters matches with the level and skill attribute of the player object and its point attribute is greater than or equal to 20. If any of the conditions are not met, then the method should return null.
Note : No two player object would have the same value for skill and level attribute.
All player object would have the points greater than 0.
All the searches should be case insensitive.
These above mentioned static methods should be called from the main method.
For findPointsForGivenSkill method - The main method should print the points as it is if the returned price is greater than 0, or it
should print "The given Skill is not available".
For getPlayerBasedOnLevel method - The main method should print the playerId of the returned player object. If the returned value is null
then it should print "No player is available with specified level, skill and eligibility points".
Before calling these static methods in main, use Scanner object to read the values of four Player objects referring attributes in the above mentioned attribute sequence.
Next, read the value for skill and level.
Please consider the skill value read above as skill parameter for both the static methods.
Consider below sample input and output:
Input:
101
cricket
Basic
20
102
cricket
Intermediate
25
111
football
Intermediate
50
113
baseball
Advanced
100
cricket
Intermediate
Output:
45
102
​
Solutions:
​
​
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args)
{
//code to read values
//code to call required method
//code to display the result
Scanner sc = new Scanner(System.in);
Player players[] = new Player[4];
for(int i = 0; i<4; i++) {
int playerId = sc.nextInt();
sc.nextLine();
String skill = sc.nextLine();
String level = sc.nextLine();
int points = sc.nextInt();
sc.nextLine();
players[i] = new Player(playerId, skill, level, points);
}
String newskill = sc.nextLine();
String newlevel = sc.nextLine();
int totalPoints = findPointsForGivenSkill(players, newskill);
Player chosenOne = getPlayerBasedOnLevel(players, newskill, newlevel);
if(totalPoints>0)
System.out.println(totalPoints);
else
System.out.println("The given Skill is not available");
if(chosenOne == null)
System.out.println("No player is available with specified level, skill and eligibility points");
else
System.out.println(chosenOne.getPlayerId());
}
public static int findPointsForGivenSkill(Player[] players, String skill)
{
//method logic
int points = 0;
for(int i = 0; i<4; i++) {
if(players[i].getSkill().equalsIgnoreCase(skill))
points = points + players[i].getPoints();
}
return points;
}
public static Player getPlayerBasedOnLevel(Player[] players, String skill, String level)
{
//method logic
for(int i=0;i<4; i++) {
if(players[i].getSkill().equalsIgnoreCase(skill) && players[i].getLevel().equalsIgnoreCase(level)){
if(players[i].getPoints() >= 20)
return players[i];
}
}
return null;
}
}
class Player
{
//code to build Player class`
private int playerId;
private String skill;
private String level;
private int points;
public int getPlayerId() {
return playerId;
}
public void setPlayerId(int playerId) {
this.playerId = playerId;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public int getPoints() {
return points;
}
public void setPoints(int points) {
this.points = points;
}
public Player(int playerId, String skill, String level, int points) {
this.playerId = playerId;
this.skill = skill;
this.level = level;
this.points = points;
}
}

OPA JUNE 19 Java
Create a class AutonomousCar with the below attributes:
carld – int
brand – String noOfTestsConducted – int
noOfTestsPassed- int
environment – String
grade – String
Write getters, setters for the above attributes . Create constructor which takes parameter in the above sequence except grade.
Create class Solution with main method. Implement two static methods – findTestPassedByEnv and updateCarGrade in Solution class.
findTestPassedByEnv method:
This method will take two input parameters -array of AutonomousCar objects and string parameter environment. The method will return the sum of the noOfTestsPassed attribute from autonomousCar objects for the environment passed as parameter.
If no autonomousCar with the given environment is present in the array of AutonomousCar objects, then the method should return 0.
updateCarGrade method: This method will take a String parameter brand, along with the array of AutonomousCar objects. The method will return the autonomousCar object, if the input String parameter matches with the brand attribute of the autonomousCar object. Before returning the object, the grade should be derived based on the rating calculation mentioned below. This grade value should be assigned to the object. If any of the above conditions are not met, then the method should return null.
The grade attribute should be calculated as follows: rating .(noOfTestsPassed * 100)/noOfTestsConducted If the rating > = 80 then grade should be ‘A1’, otherwise the grade should be ‘B2’.
The above mentioned static methods should be called from the main method. For findTestPassedByEnv method – The main method should print the totalTestPassed as it is, if the returned value is greater than 0, or it should print “There are no tests passed in this particular environment”.
For updateCarGrade method – The main method should print the brand and grade of the returned autonomousCar object. The brand and grade should be concatinated with :: while printing. eg:- Tesla::A1, where Tesla is the brand and Al is the grade.
If the returned value is null then it should print “No Car is available with the specified brand”.
Before calling these static methods in main, use Scanner object to read the values of four autonomousCar objects referring attributes in the above mentioned attribute sequence (except grade attribute). Next, read the value for environment and brand.
input:
100
Tesla
1000
500
Hills
200
Ford
2000
1500
Desert
300
Royce
3000
1700
Hills
400
Mercedez
1000
400
Desert
Desert
Mercedez
Output:
1900
Mercedez::B2
​
​
Solutions:
​
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main
{
public static void main(String[] args)
{
//code to read values
//code to call required method
//code to display the result
int carId, noOfTestsConducted, noOfTestsPassed;
String brand, environment, grade;
Scanner s = new Scanner(System.in);
AutonomousCar[] ac = new AutonomousCar[4];
for(int i=0;i<4;i++){
carId = s.nextInt();s.nextLine();
brand = s.nextLine();
noOfTestsConducted = s.nextInt();
noOfTestsPassed = s.nextInt();s.nextLine();
environment = s.nextLine();
ac[i] = new AutonomousCar(carId, brand, noOfTestsConducted, noOfTestsPassed, environment);
}
String getEnv = s.nextLine();
String getBrand = s.nextLine();
int sumEnv = findTestPassedByEnv(ac, getEnv);
if(sumEnv==0)
System.out.println("There are no tests passed in this particular environment");
else
System.out.println(sumEnv);
AutonomousCar acar = updateCarGrade(ac, getBrand);
if(acar==null)
System.out.println("No Car is available with the specified brand");
else
System.out.println(acar.getBrand()+"::"+acar.getGrade());
}
public static int findTestPassedByEnv(AutonomousCar[] acArray, String env)
{
//method logic
int sum = 0;
for(int i=0;i<acArray.length; i++){
if(env.equalsIgnoreCase(acArray[i].getEnvironment())){
sum = sum+acArray[i].getNoOfTestsPassed();
}
}
return sum;
}
public static AutonomousCar updateCarGrade(AutonomousCar[] acArray, String brand)
{
//method logic
AutonomousCar ac = new AutonomousCar();
int rating;
for(int i=0;i<acArray.length;i++){
if(brand.equalsIgnoreCase(acArray[i].getBrand())){ rating=acArray[i].getNoOfTestsPassed()*100)/acArray[i].getNoOfTestsConducted();
if(rating>=80) acArray[i].setGrade("A1");
else acArray[i].setGrade("B2");
ac = acArray[i];
return ac;
}
}
return null;
}
}
class AutonomousCar
{
//code to build the class
int carId, noOfTestsConducted, noOfTestsPassed;
String brand, environment, grade;
AutonomousCar(){};
AutonomousCar(int carId, String brand, int noOfTestsConducted, int noOfTestsPassed, String environment){
super();
this.carId = carId;
this.brand = brand;
this.noOfTestsConducted = noOfTestsConducted;
this.noOfTestsPassed = noOfTestsPassed;
this.environment = environment;
}
int getCarId(){
return carId;
}
String getBrand(){
return brand;
}
int getNoOfTestsConducted(){
return noOfTestsConducted;
}
int getNoOfTestsPassed(){
return noOfTestsPassed;
}
String getEnvironment(){
return environment;
}
void setGrade(String grade){
this.grade = grade;
}
String getGrade(){
return grade;
}
}
​