{Java OOP Basics} Defining Classes => Problem 11 Cat Lady
Здравейте, поради някаква причина в Judge-a тази задача ми минава само единия от 5-те теста, а на останалите ми дава Runtime Error.
Наистина първоначално бях написал задачата малко хаотично и хабях излишни ресурси и време и с някви цикълчета излишни и все пак би няма нещо кой знае какво в решението, което да бави толкова.
След това оптимизирах, даже прегледах и видеото от упражнението където е решена задачата и правх if-else проверки в while() цикъла и от видеото видях че ползва момичето switch, реално switch-a e по-бърз от if-else, и switch даже сложих и пак ми минава само 1/5 теста, останалите 4 са Runtime error. Ето ми го решението -->
package Prob11;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;
abstract class Cat{
private String name;
public Cat(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Siamese extends Cat {
private int earSize;
public Siamese(String name, int earSize) {
super(name);
this.earSize = earSize;
}
public int getEarSize() {
return earSize;
}
public void setEarSize(int earSize) {
this.earSize = earSize;
}
@Override
public String toString() {
return String.format("Siamese %s %d", super.getName(), this.earSize);
}
}
class Cymric extends Cat {
private int furLenght;
public Cymric(String name, int furLenght) {
super(name);
this.furLenght = furLenght;
}
public int getFurLenght() {
return furLenght;
}
public void setFurLenght(int furLenght) {
this.furLenght = furLenght;
}
@Override
public String toString() {
return String.format("Cymric %s %d", super.getName(), this.furLenght);
}
}
class StreetExtraordinaire extends Cat {
private int decibels;
public StreetExtraordinaire(String name, int decibels) {
super(name);
this.decibels = decibels;
}
public int getDecibels() {
return decibels;
}
public void setDecibels(int decibels) {
this.decibels = decibels;
}
@Override
public String toString() {
return String.format("StreetExtraordinaire %s %d", super.getName(), this.decibels);
}
}
public class Prob11Main {
public static void main(String[] args) throws IOException {
// Scanner scanner = new Scanner(System.in);
BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
String inputLine = scanner.readLine();
// List<Cat> cats = new ArrayList<>();
HashMap<String, Cat> cats = new HashMap<>();
while(!inputLine.equals("End")){
String[] splitTheLine = inputLine.split(" ");
String breed = splitTheLine[0];
String name = splitTheLine[1];
int specification = Integer.valueOf(splitTheLine[2]);
Cat cat = null;
switch (breed){
case "Siamese" :
cat = new Siamese(name, specification);
break;
case "Cymric" :
cat = new Cymric(name, specification);
break;
case "StreetExtraordinaire" :
cat = new StreetExtraordinaire(name, specification);
break;
}
cats.put(name, cat);
// if(breed.equals("Siamese")){
// Cat cat = new Siamese(name, specification);
// cats.add(cat);
// }else if(breed.equals("Cymric")){
// Cat cat = new Cymric(name, specification);
// cats.add(cat);
// }else {
// Cat cat = new StreetExtraordinaire(name, specification);
// cats.add(cat);
// }
inputLine = scanner.readLine();
}
String theCatsName = scanner.readLine();
System.out.println(cats.get(theCatsName));
// for(int i = 0; i < cats.size(); i++){
// if(theCatsName.equals(cats.get(i).getName())){
// System.out.println(cats.get(i).toString());
// }
// }
}
}