#java #ascii
#java #ascii
Вопрос:
Мне нужно взять символы ASCII от 32 до 93 и заставить их возвращать значение true, в противном случае любые другие символы за пределами этих параметров возвращали бы значение false .
public static boolean safeToUse(String plaintext) {
plaintext = plaintext.toUpperCase();
for (char i=1; plaintext.length(); i );
(i >32 amp;amp; i < 93);
return true;
else return false;
}
Затем у меня есть другой файл, который принимает этот код и выдает значение true или false:
String plaintext;
plaintext = "!";
if (CryptoCode.safeToUse(plaintext)) {
System.out.println("Yay, it's a valid message to crypt!");
}
else {
System.out.println("Ooops.");
}
Но единственные возвращаемые значения, которые я получаю, — это возвращаемое значение true, независимо от того, является ли оно false . И если бы я переключил свое значение «return true» из первого кода на «return false», каждый ответ выдавал бы значение false независимо от того, было ли оно true…
Комментарии:
1.
safeToUse
не имеет никакого смысла вообще. Как вы думаете, что вы должны перебирать?2. Подсказка: 1) Вы, вероятно, хотите
String.charAt()
. 2) ВызовtoUpperCase()
и игнорирование результата бессмысленны. Обратите внимание, что строки являются неизменяемыми.3. Ваш цикл for даже не учитывает
plaintext
параметр. Вы должны прочитать о Java — ваш цикл всегда начинается сi == 1
, немедленно завершается, поскольку он не находится в «безопасном» диапазоне4.
for (char i=1; i>32 amp;amp; i<93; i );
что бы вы ожидали от этого?5. Я понятия не имею, что это будет делать, это моя вторая неделя занятий.. Я работаю с примерами, которые мне показали, и с тем, что я могу найти в Интернете..
Ответ №1:
Я не уверен, почему вы хотите преобразовать в верхний регистр, но вы можете изменить мой пример кода ниже, если вам все еще нужно это сделать. Также я не уверен из вашего заявления, предназначена ли фильтрация для включения или исключения граничных значений 32 и 93. Я оставлю это на ваше усмотрение.
public static boolean safeToUse(String plaintext) {
for (int i = 0; i < plaintext.length(); i )
{
char c = plaintext.charAt(i);
boolean valid = ( ((c >= 'a') amp;amp; (c <= 'z')) ||
((c >= ' ') amp;amp; (c <= ']')) ); // space is 32. right bracket is 93
if (valid == false)
{
return false;
}
}
return true;
}
Комментарии:
1.
toUpperCase
используется для включения строчных букв, поскольку в этом диапазоне находятся только буквы верхнего регистра asciitable.com