#java #binary
#java #двоичный
Вопрос:
Я начинающий программист, и я пытаюсь написать программу, которая принимает двоичное число в качестве входных данных. Сначала он определяет, является ли это двоичным числом, а затем, если это так, подсчитывает, сколько в нем единиц, а затем отображает сумму. Прямо сейчас он отклоняет все мои числа. Любая помощь будет оценена.
Scanner scan = new Scanner(System.in);
String binary;
int count = 0;
System.out.print( "Enter your binary number: ");
binary = scan.nextLine( );
for ( int i = 0; i <= binary.length()-1; i ){
char c = binary.charAt(i);
while ((c != '1') || (c != '0')){
System.out.println( "Invalid Number try again" );
System.out.println("Enter your binary number: ");
binary = scan.nextLine();
}
if ( c == '1')
count ;
}
System.out.println("The number of 1s are: " count);
Комментарии:
1. На каком языке? Похоже на Java. Вы должны пометить язык или, по крайней мере, упомянуть его в вопросе.
2. Прошу прощения, это Java
Ответ №1:
Ваше условие while проверяет, что символ не равен 1 или не равен 0. Если вы подумаете об этом, это всегда должно быть false .
например, если рассматриваемый входной символ равен 1, это будет равно FALSE ИЛИ TRUE и, следовательно, будет TRUE . Если входной символ равен 0, он будет равен TRUE ИЛИ FALSE, что опять же является TRUE .
Поэтому измените условие, чтобы проверить, что символ не равен 1, А не 0.
Комментарии:
1. Спасибо, я даже не видел, что это было так просто.
Ответ №2:
Ваше while
условие логически неверно. Прямо сейчас вы проверяете, является ли символ либо «не 1», либо «не 0». Все числа либо не равны 1, либо не равны 0.
Если вы хотите исключить любые символы, которые не являются ни 1, ни 0, вам нужно написать
while ( ( c != '1' ) amp;amp; ( c != '0' ) )
Вам следует изучить некоторую логику предикатов или дискретные структуры. Это поможет создать ваши логические фрагменты.