2014-02-07 4 views
0

, поэтому у меня есть класс Parser, который читает пользовательский ввод и разбивает его на каждом «/». Это второй раз, когда я делал такой класс, но на этот раз мне нужно проанализировать строку двумя разными способами, исходя из того, какое значение split [0] является первым значением. Я не уверен, что вводить для возвращаемого типа, потому что весь класс делает, это взять введенную строку, расщепляя на каждом «/». и затем назначая эти входы переменным в других классах. Любая помощь будет оценена по достоинству. БлагодаряОтсутствует ошибка оператора return в классе Parser

Вот класс

общественного класса DrinkParser {

public static Drink parseStringToDrink(String lineToParse){ //ERROR: missing return statement. 

    String regex = "[/]"; 
    String [] split = lineToParse.split(regex); 


    if ("Box".equals(split[0]) || "box".equals(split[0])){ 

     DrinkInBox dIB = new DrinkInBox(split[1], Double.parseDouble(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5])); 
     return dIB; 

    } 

    if("Cylinder".equals(split[0]) || "cylinder".equals(split[0])){ 

     DrinkInCylinder dIC = new DrinkInCylinder(split[1], Double.parseDouble(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4])); 
     return dIC; 
    } 

} 

}

Последний раз, когда я написал класс, как это все, что я должен был сделать, был прочитан в строке независимо от того, что раскол [0] - это ... этот класс на всякий случай.

общественного класса BankParser {

public static Bank bankParser(String lineToParse){ //parses the string and sets the bankName,bankID, and bankAddress based off the inputed String 

    String regex = "[/,]"; 
    String[] split = lineToParse.split(regex); 
    Bank b = new Bank(); 
    b.setBankName(split[0]); //sets the first split to the BankName 
    b.setBankID(split[1]); // sets the second split to the BankID 
    b.setBankAddress(split[2], split[3]); //set the city to the third split and the state to the fourth split in BankAddress 
    return b; 

} 

}

+0

Вам нужен возврат или вы можете просто ввести тип возврата void и просто установить значения? –

+0

@AlexJohnson Метод 'parseStringToDrink' представляется фабричным методом' static', поэтому он должен возвращать соответствующий объект 'Drink'. – rgettman

+0

возвращает null после второго оператора if, и пусть класс вызывающего абонента принимает решение о том, что делать, когда парсер возвращает null. – Tony

ответ

0

split[0] Что делать, если ни "Cylinder", ни "Box"? Для этого случая нет return. Вероятно, в этом случае ошибка, поэтому бросьте IllegalArgumentException.

throw new IllegalArgumentException("Bad drink type: " + split[0]); 
} // end of parseStringToDrink 
Смежные вопросы