Member 13689256 Ответов: 3

Что не так с этой программой? Цикл выполняется только один раз?


/*. An Evens number is an integer whose digits are all even. For example 2426 is an Evens number but 3224 is not.

Write a function named isEvens that returns 1 if its integer argument is 

an Evens number otherwise it returns 0.

The function signature is
   int isEvens (int n)
*/
import java.util.Scanner;
public class Evenoroddnumber {
	
	int status,n,k,evencount=0,oddcount=0,temp=0;
	
	int isEvens (int n)
	{System.out.println("number entered from main is"+n);
		if(n<0)
		{
			System.out.println("number is negative");
			return 0;
		}
		else if(n>0)
		{System.out.println("number is positive");
			temp=n%10;
			System.out.println("reminder is"+temp);
			if(temp%2==0)
			{
				System.out.println("reminder is even"+temp);
				evencount++;
				System.out.println("count even number"+evencount);
				n=n/10;
				System.out.println("number devided by 10 is"+n);
			}
			else 
			{
				System.out.println("reminder is odd"+temp);	
				oddcount++;
			}
		}
		if(oddcount!=0)
		{
			return 0;
		}
		else
		{
			return 1;
		}
	}

	public static void main(String args[])
	{
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();		
		Evenoroddnumber e1=	new Evenoroddnumber();
		int x=e1.isEvens(n);
		
		
	}

}


Что я уже пробовал:

/*. An Evens number is an integer whose digits are all even. For example 2426 is an Evens number but 3224 is not.

Write a function named isEvens that returns 1 if its integer argument is 

an Evens number otherwise it returns 0.

The function signature is
   int isEvens (int n)
*/
import java.util.Scanner;
public class Evenoroddnumber {
	
	int status,n,k,evencount=0,oddcount=0,temp=0;
	
	int isEvens (int n)
	{System.out.println("number entered from main is"+n);
		if(n<0)
		{
			System.out.println("number is negative");
			return 0;
		}
		else if(n>0)
		{System.out.println("number is positive");
			temp=n%10;
			System.out.println("reminder is"+temp);
			if(temp%2==0)
			{
				System.out.println("reminder is even"+temp);
				evencount++;
				System.out.println("count even number"+evencount);
				n=n/10;
				System.out.println("number devided by 10 is"+n);
			}
			else 
			{
				System.out.println("reminder is odd"+temp);	
				oddcount++;
			}
		}
		if(oddcount!=0)
		{
			return 0;
		}
		else
		{
			return 1;
		}
	}

	public static void main(String args[])
	{
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();		
		Evenoroddnumber e1=	new Evenoroddnumber();
		int x=e1.isEvens(n);
		
		
	}

}

3 Ответов

Рейтинг:
15

OriginalGriff

Как сказал BillW33: у вас нет петли.
И вам нужно внутри вашего Evenoroddnumber функционируйте так же, как и в вашем main - этот main цикл позволяет обрабатывать несколько чисел, причем то, которое вам нужно внутри Evenoroddnumber должен быть там, чтобы обрабатывать каждую цифру в пользовательском вводе.
В принципе, вам нужно сказать:
1) в то время как число > 0
1.1) получить наименьшую значащую цифру в переменной, называемой digit
1.2) если digit это странно, возвращение false.
1.3) в противном случае разделите число на десять и повторите цикл еще раз
2) Возвращение true


Maciej Los

5ed!

Рейтинг:
1

BillW33

Вы говорите, что цикл выполняется только один раз, но у вас нет цикла.
В вашем основном методе попробуйте поместить цикл вокруг операторов, где вы читаете следующее число, и проверить, является ли оно четным. Цикл должен закончиться, когда у вас закончатся входные данные.


Member 13689256

я новичок в программировании. не могли бы вы написать программу для упомянутого вопроса?

phil.o

Я не думаю, что кто-то будет в порядке, чтобы сделать вашу домашнюю работу.

Member 13689256

я прошу о помощи.

BillW33

@Member 13689256: мы предоставляем Вам помощь, чтобы понять, как делать свою работу. Мы здесь не для того, чтобы делать за вас вашу работу.

Member 13689256

если я ввел 246, то сначала он должен проверить 6, затем 4, затем 2, если все четные, pddcount равен нулю, а число равно iseven? но эта программа проверяет только 6

Maciej Los

Я бы сказал: это очевидно ;)
5эд, Билл!

Рейтинг:
0

phil.o

Чтобы построить алгоритм, лучше всего сначала записать его на бумаге, то есть сделать это вручную, прежде чем пытаться заставить компьютер сделать это.

Псевдокод для вашей задачи может быть

while n is greater than zero
   if n is odd, return 0
   divide n by 10
return 1

Вам не нужно считать количество четных чисел. Вам также не нужны все эти глобальные переменные.
Теперь попробуйте перевести этот псевдокод на java, используя свой курс и спрашивая своего учителя, есть ли что-то, чего вы не понимаете.


Maciej Los

5ed!