
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 JULY 03 JAVA
Naval Vessel Classification
Create a class NavalVessel with the below attributes:
vesselld – int
vesselName – String
noOfVoyagesPlanned – int
noOfVoyagesCompleted- int
purpose – String
classification – String
Write getters, setters for the above attributes . Create constructor which takes parameter in the above sequence except classification.
Create class Solution with main method. Implement two static methods – findAvgVoyagesByPct and findVesselByGrade in Solution class.
findAvgVoyagesByPct method:
This method will take two input parameters -array of NavalVessel objects and int parameter percentage. The method will return the average of the noOfVoyagesCompleted attribute from NavalVessel objects which meets the percentage requirement as mentioned below.
The percentage for each navalVessel is calculated as
percentage .(noOfVoyagesCompleted * 100)/noOfVoyagesPlanned
If the above calculated percentage is greater than or equal to the percentage passed as the parameter, then those objects should participate in the average calculation. If there are no objects with the mentioned criteria, then the method should return 0.
findVesselByGrade method:
This method will take a String parameter purpose, along with the array of NavalVessel objects. The method will return the NavalVessel object, if the input String parameter matches with the purpose attribute of the NavalVessel object.
Before returning the object, the classification should be derived as mentioned below. This classification value should be assigned to the object before returning. If any of the above conditions are not met, then the method should return null.
The classification attribute should be calculated based on the percentage calculation mentioned above. If the percentage = 100 then classification should be ‘Star’, if percentage is between 99 and 80 then classification should be ‘Leader, if percentage is between 79 and 55 then classification should be ‘Inspirer otherwise the classification should be ‘Striver’
If the returned value is null then it should print “No Naval Vessel is available with the specified purpose”.
Before calling these static methods in main, use Scanner object to read the values of four NavalVessel objects referring attributes in the above mentioned attribute sequence (except the classification attribute). Next, read the value for percentage and purpose.
Consider below sample input and output:
Input:
111
Rojer
100
100
Passenger
222
Kalam
200
100
Goods
333
Yashwin
400
300
Army
444
Thanishwini
500
500
Welfare
75
Army
Output:
300
Yashwin%Inspirer
​
​
​
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
Scanner s = new Scanner(System.in);
int vesselId, noOfVoyagesPlanned, noOfVoyagesCompleted;
String vesselName, purpose;
NavalVessel[] nv = new NavalVessel[4];
for(int i=0;i<nv.length;i++){
vesselId = s.nextInt();s.nextLine();
vesselName = s.nextLine();
noOfVoyagesPlanned = s.nextInt();
noOfVoyagesCompleted = s.nextInt();s.nextLine();
purpose = s.nextLine();
nv[i] = new NavalVessel(vesselId, vesselName, noOfVoyagesPlanned, noOfVoyagesCompleted, purpose);
}
int getPercentageValue = s.nextInt();s.nextLine();
String getPurposeValue = s.nextLine();
//code to call required method
int avgOfVoyagesCompleted = findAvgVoyagesByPct(nv, getPercentageValue);
if(avgOfVoyagesCompleted>0){
System.out.println(avgOfVoyagesCompleted); }
else{
System.out.println("There are no voyages completed with this percentage");
}
//code to display the result
NavalVessel navalvessel = findVesselByGrade(nv, getPurposeValue);
if(navalvessel == null) {
System.out.println("No Naval Vessel is available with the specified purpose"); }
else
{ System.out.println(navalvessel.getVesselName()+"%"+navalvessel.getClassification()); }
}
public static int findAvgVoyagesByPct(NavalVessel[] nvArray, int percentage)
{
//method logic
int avg = 0,count=0;
for(int i=0;i<nvArray.length;i++){
int percent = (nvArray[i].getNoOfVoyagesCompleted()*100)/nvArray[i].getNoOfVoyagesPlanned();
if(percent >= percentage){
avg += nvArray[i].getNoOfVoyagesCompleted();
count++;
}
}
if(avg == 0)
return 0;
else
return avg/count;
}
public static NavalVessel findVesselByGrade(NavalVessel[] nvArray, String purpose)
{
//method logic
NavalVessel nv = new NavalVessel();
for(int i=0;i<nvArray.length;i++){
if(purpose.equalsIgnoreCase(nvArray[i].getPurpose())){
int percentage = (nvArray[i].getNoOfVoyagesCompleted()*100)/nvArray[i].getNoOfVoyagesPlanned();
if(percentage==100) nvArray[i].setClassification("Star");
else if(percentage >=80 && percentage <=99) nvArray[i].setClassification("Leader");
else if(percentage >=55 && percentage <=79) nvArray[i].setClassification("Inspirer");
else
nvArray[i].setClassification("Striver");
nv = nvArray[i];
return nv;
}
}
return null;
}
}
class NavalVessel
{
//code to build the class
int vesselId, noOfVoyagesPlanned, noOfVoyagesCompleted;
String vesselName, purpose, classification;
NavalVessel(){}
NavalVessel(int vesselId, String vesselName, int noOfVoyagesPlanned, int noOfVoyagesCompleted, String purpose){
super();
this.vesselId = vesselId;
this.vesselName = vesselName;
this.noOfVoyagesPlanned = noOfVoyagesPlanned;
this.noOfVoyagesCompleted = noOfVoyagesCompleted;
this.purpose = purpose;
}
int getVesselId(){
return vesselId;
}
String getVesselName(){
return vesselName;
}
int getNoOfVoyagesPlanned(){
return noOfVoyagesPlanned;
}
int getNoOfVoyagesCompleted(){
return noOfVoyagesCompleted;
}
String getPurpose(){
return purpose;
}
void setClassification(String classification){
this.classification = classification;
}
String getClassification(){
return classification;
}
}