- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class PolynomialParser {
public Polynomial parse(String rawPolynomial) {
String source = normalizeSourceString(rawPolynomial);
Map<Integer, Integer> result = new HashMap<>();
StringTokenizer tokenizer = new StringTokenizer(source, "[+-]", true);
boolean isCurrentNegative = false;
int currentDegree;
int currentCoefficient;
while (tokenizer.hasMoreTokens()) {
String currentToken = tokenizer.nextToken();
if ("-".equals(currentToken)) {
isCurrentNegative = true;
} else if ("+".equals(currentToken)) {
isCurrentNegative = false;
} else {
if (currentToken.contains("x")) {
if (currentToken.contains("^")) {
String[] tmp = currentToken.split("x\\^");
currentDegree = Integer.parseInt(tmp[1]);
int draftCoefficient = Integer.parseInt(tmp[0]);
currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
} else {
currentDegree = 1;
String[] tmp = currentToken.split("x");
int draftCoefficient = (tmp.length == 0) ? 1 : Integer.parseInt(tmp[0]);
currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
}
} else {
currentDegree = 0;
int draftCoefficient = Integer.parseInt(currentToken);
currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
}
result.put(currentDegree, currentCoefficient);
}
}
return new Polynomial(result);
}
private String normalizeSourceString(String source) {
String result = source.replaceAll("\\s+","");
return result.toLowerCase();
}
}
Из сегодняшнего. Парсинг многочленов.
wvxvw 01.02.2015 17:28 # +1
Запускать не пробовал.
itrofan-ebufsehjidov 01.02.2015 17:33 # −2
А вообще спасибо, при рефакторинге поможет=)
Dummy00001 02.02.2015 01:51 # +1
Это относится только к тем у кого руки растут из ж.
Но идея в целом правильная: если не умеешь тулзой пользоватся, и если не способен научится ей пользоватся, то лучше вообще не пользоватся.
kegdan 02.02.2015 02:18 # 0
У таких людей всегда мнооого проблем
Desktop 11.09.2023 18:22 # 0
guest 03.02.2015 22:51 # +5
bormand 04.02.2015 00:17 # −6
wvxvw 04.02.2015 00:25 # −14
bormand 04.02.2015 00:42 # −16
3.14159265 04.02.2015 00:49 # −15
kegdan 04.02.2015 01:04 # −7
bormand 04.02.2015 06:50 # −13
Xom94ok 04.02.2015 20:57 # −15
kegdan 04.02.2015 22:42 # 0
Stallman 01.02.2015 22:39 # 0
wvxvw 01.02.2015 23:03 # +3
sakkath 03.02.2015 12:07 # 0
wvxvw 03.02.2015 12:20 # 0
Скорее всего гуманитарии не пойдут лабать на говноспринге говноынтырпрайз говносервера.
Даже если и пойдут, то говносервера сегодня могут строить специально обученые обезьяны управляемые обезьянами без какого-либо специального обучения.
Яву учат для общего развития, чтобы у человека сформировалось понимание алгоритмов, огранизации данных, обработки информации. Это, например, нужно управленцам в програмировании, научным сотрудникам, которые хотят применить свои знания на практике, или хотят использовать специальное ПО для исследований.
Но, я согласен с тем, что Ява - плохой для этого язык. Я думаю, что выбор обоснован распространенностью в большей степени чем какими-либо другими соображениями.
kegdan 02.02.2015 01:04 # +1
guest 03.02.2015 00:12 # +1
guest 03.02.2015 22:50 # +1
На первом курсе не надо учить ни то ни другое, кстати.