2015-02-15 5 views
-2

Я надеялся, что кто-то может помочь мне в этом вопросе. То, что я пытаюсь выполнить, пользователь вводит слово или небольшую фразу. Затем он запросит 4 номера (int). Оттуда программа будет использовать введенное 4 (ints) и извлечь из этой позиции char. "I love java" 7 8 9 10 выпуск: "java". Если пользователь вводит число больше, чем фраза, я хочу, чтобы он отображал сообщение. Я использую String.length() для сравнения номеров 4 int для обеспечения того, чтобы они были не больше фразы. когда я использую одну переменную она работает отлично, но когда я добавить && его бросить следующее сообщение ... какие-нибудь предложения? .... Из того, что я могу видеть, что это выглядит нормальноJava: использование "||" и "&&"

Line: 37 
bad operand types for binary operator '&&' 
first type: boolean 
second type: int 


import java.util.Scanner; 

class FunString{ 

public static void main(String[] arg){ 

String userinput; 

int fristnum; 

int secondnum; 

int thirdnum; 

int fourthnum; 

char finalfristnum; 

char finalsecondnum; 

char finalthirdnum; 

char finalfourthnum; 
int userinputlegnth; 

    Scanner scan = new Scanner(System.in); 

System.out.print("Please enter a word:"); 
userinput = scan.next(); 
fristnum = scan.nextInt(); 
secondnum = scan.nextInt(); 
thirdnum = scan.nextInt(); 
fourthnum = scan.nextInt(); 

userinputlegnth = userinput.length(); 

    if(userinputlegnth < fristnum && secondnum && thirdnum ){ 


finalfristnum = userinput.charAt(fristnum); 
finalsecondnum = userinput.charAt(secondnum); 
finalthirdnum = userinput.charAt(thirdnum); 
finalfourthnum = userinput.charAt(fourthnum); 

System.out.println(finalfristnum + " " + finalsecondnum + " " + finalthirdnum  + " " + finalfourthnum); 
}else{ 

System.out.println("WRONG"); 
} 


} 

} 
+1

Это недопустимый синтаксис Java. Это должно быть: 'if (userinputlegnth

+1

Обратите внимание, что, хотя один '' и будет компилироваться, он не будет делать то, что вы ожидаете. –

+0

я вижу спасибо ..... – Hugo

ответ

1

Правильная логика будет:

if(fristnum < userinputlegnth && 
    secondnum < userinputlegnth && 
    thirdnum < userinputlegnth && 
    fourthnum < userinputlegnth){ 

    finalfristnum = userinput.charAt(fristnum); 
    finalsecondnum = userinput.charAt(secondnum); 
    finalthirdnum = userinput.charAt(thirdnum); 
    finalfourthnum = userinput.charAt(fourthnum); 
} else ... 

Объяснение: Номер выбора символа из строки должно быть меньше, чем длина этой строки:

*num < userinputlegnth 

Если у вас есть два таких числа, оба должны соответствовать этому условию, которое требует логических и (&&), чтобы объединить два условия:

fristnum < userinputlegnth && secondnum < userinputlegnth 

И условие, такие как a < b удовлетворяется, если меньше значение находится на левой стороне.

2
if(userinputlegnth < fristnum && secondnum && thirdnum ) 

Этот ярлык вам пытаются недопустимый синтаксис.

Использование:

if ((userinputlegnth < fristnum) && 
    (userinputlegnth < secondnum) && 
    (userinputlegnth < thirdnum)) 
Смежные вопросы