Примечание стороны: вместо того, чтобы просить у пользователя 1, 2, 3 или 4, необходимо непосредственно попросить, чтобы они ввели переменную, которую они хотят решить:
Решают уравнение y = m * x + b, для которой переменной (y, m, b, выходят)?
Это заставляет пользователей программы думать больше в проблемной области вместо некоторой технически бесполезной косвенности.
<час>, Поскольку у Вас есть фон Python, необходимо знать, что добавление отступа строк важно и имеет значение. Это - то же для программ Java. Единственная разница - то, что компилятор Java игнорирует добавление отступа полностью. Но программы Java также прочитаны людьми, и для них, добавление отступа жизнеспособно для понимания структуры программы. Код, который Вы отправили, имеет непоследовательное добавление отступа, и необходимо позволить IDE зафиксировать это.
<час>Ваша программа должна быть структурирована как это:
public class AlgebraTutor {
private final Scanner in = new Scanner(System.in);
private final PrintStream out = System.out;
private int attempts = 0;
void solveForY() {
...
}
void solveForM() {
...
}
void solveForB() {
...
}
void mainMenu() {
while (true) {
out.println("Solve the equation y = m * x + b for which variable (y, m, b), or quit?");
if (!in.hasNextLine()) {
return;
}
switch (in.nextLine()) {
case "y":
solveForY();
break;
case "m":
solveForX();
break;
case "b":
solveForB();
break;
case "q":
case "quit":
return;
}
}
}
public static void main(String[] args) {
new AlgebraTutor().mainLoop();
}
}
При работе со строками всегда помните: byte
! = char
. Итак, в вашем первом примере у вас есть char c3
, а не байт c3
, что является огромной разницей: байт
будет частью UTF-8 последовательность, но char
уже является Unicode . Поэтому, когда вы конвертируете это в UTF-8, символ Unicode c3
должен стать байтовой
последовательностью c3 83
.
Итак, вопрос: как это произошло вы получаете строку? В этом коде должна быть ошибка, которая неправильно обрабатывает закодированные в UTF-8 последовательности байтов
.
Обычно работает ISO-8859-1
, потому что эта кодировка не изменяет char
с кодовой точкой <256 (т.е. любое значение от 0 до 255), поэтому последовательности байтов
в кодировке UTF-8 не будут изменены.
Ваш последний пример также неверен: char e9
равен é в ] ISO-8859-1
и Unicode. В UTF-8 это недопустимо, так как это не байт
и поскольку префикс байт c3
отсутствует. Тем не менее, он правильно представляет искомую строку Unicode.
Если вы начнете со строки Java, где "d \ u00C3 \ u00A9jeuner" .equals (stmt)
, то данные уже повреждены на этом этапе.
A Символ Java char
не является символом C char
. char
в Java имеет ширину 16 бит и неявно содержит данные в кодировке UTF-16 . Попытка сохранить любые другие закодированные данные в типе Java char
/ String вызывает проблемы. Символьные данные в любой другой кодировке должны иметь вид данных байтов
.
Если вы читаете параметр с помощью API сервлета , то вероятно, что HTTP-запрос содержит несогласованные или недостаточные информация о кодировании. Проверьте код вызова и заголовки HTTP. Скорее всего, клиент кодирует данные как UTF-8 ,
вы рассматривали
диаграммы UML 2 Создания с Затмением Инструменты UML2 - Обучающая программа ?
я имел более старые ссылки для таких инструментов, но новые, полагаются на проект UML2 (описанный в обучающей программе). MDT-UML2Tools находится в производстве, Omondo есть, но не свободно.
Папирус UML , например, основан на UML2 Tool.
На рынке имеется инструмент, который может выполнить указанные выше действия (класс UML, пакет и взаимодействие). Называется ModelGoon . Последний раз пробовали в июле 2018 года.
Полный список доступен на Eclipse marketplace .
-121--1539552-У меня очень похожая проблема, за исключением того, что моя форма использует запрос «GET», а не запрос «POST».
Итак, мой URL-адрес - это что-то вроде: http ://localhost: 4502/form.jsp? query = d% C3% A9jeuner
request.getCharacterEncoding() = ISO-8859-1
response.getCharacterEncoding() = UTF-8
request.getParameter("query") = déjeuner
Так что если для декодирования параметра запроса используется UTF-8 (что явно не так) или это просто ошибка браузера, потому что браузер не устанавливает какой-либо заголовок кодировки символов (что опять же не имеет большого смысла, потому что это просто ошибка браузера Вот полный набор заголовков и обратите внимание на A9% C3% в URL.
http://localhost:4502/form.jsp?query=d%C3%A9juerne
GET /form.jsp?query=d%C3%A9juerne HTTP/1.1
Host: localhost:4502
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.17) Gecko/2010010604 Ubuntu/9.04 (jaunty) Firefox/3.0.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Проблема в том, что я скопировал и вставил запрос в форму браузера и неправильно закодировал его. И в хром, и в firefox.
Через некоторое время Дальнейшее расследование. Я нашел этот ответ
Как заставить UTF-8 работать в веб-приложениях Java? .
Все дело в установке URIEncoding = "UTF-8" в коннекторе tomcat.
Теперь выясним, как это сделать в CMS, которую мы используем (CQ5 / Day).