Я пишу программу, которая определит, является ли двойной литерал 4 символами, и распечатает его на экране. Я считаю, что правильно сделал ту часть, где я проверю, есть ли ровно 4 символа. Я застрял в том, как проверить, есть ли +, - или . является первым символом. Со мной
str.charAt(0) == "+" || "-" || "." Я получаю сообщение об ошибке «Несовместимый операнд».
public class Program4 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
String str;
System.out.println("Please enter a valid (4 character) double literal consisting of these numbers and symbols: '+', '-', '.', (decimal point), and '0' through '9'");
str = stdIn.nextLine();
int length = str.length();
// the next if statement will determine if there are exactly 4 characters \\
if ( length == 4 ) {
// the next if statement checks for a +, -, or . (decimal) in the first character \\
if ( str.charAt(0) == "+" || "-" || ".") {
}
}
else {
System.out.println ("Please restart the program and enter in a valid 4 character double literal.");
}
}
}
str.charAt(0) == '+' || str.charAt(0) == '-' || str.charAt(0) == '.'Это не КОБОЛ; вы не можете выполнять «быстрые» логические операции, такие как x == a || b || c. Вы должны написать каждое сравнение полностью: x == a || x == b || x == c
String#startsWith



заменить это if ( str.charAt(0) == "+" || "-" || ".") {
с участием
`if ( str.charAt(0) == '+' || str.charAt(0)=='-' || str.charAt(0)=='.') {
Все еще недопустимый синтаксис Java, так как вы не можете сказать a == 1 || 2 || 3
очевидно -----
Этот ...
if ( str.charAt(0) == "+" || "-" || ".") {
... не имеет смысла. Операнды оператора || должны быть booleans. Выражение str.charAt(0) == "+" оценивается как boolean, а две отдельные строки — нет.
Есть множество способов решить эту проблему, и какой из них наиболее подходит для вас, зависит от контекста. Однако способ один использует тот факт, что строковые литералы — это String, как и любые другие, для которых вы можете вызывать методы. Такие как indexOf():
if ("+-.".indexOf(str.charAt(0)) >= 0) {
// starts with +, -, or .
}
Вы не решили другую проблему с кодом, то есть сравнение char со строковым литералом, а не с символьным литералом.
По-другому:
switch ( str.charAt(0) ) {
case '+': case '-': case '.':
<do something>
break;
}
if ("+-.".indexOf(str.charAt(0)) >= 0) {