在Java中,如何计算多位数中的奇数、偶数和零数?
基本上,我需要编写一个程序,以整数的形式接受用户输入,包括在Java中,如何计算多位数中的奇数、偶数和零数?,java,count,zero,Java,Count,Zero,基本上,我需要编写一个程序,以整数的形式接受用户输入,包括2^31-1,并返回整数中的奇数、偶数和零数。例如 Input: 100 Output: 1 Odd, 0 Even, 2 Zeros // 1(Odd)0(Zero)0(Zero) 或 我很确定我想得太多了,但我不能让我的大脑慢下来。有人能帮忙吗? 这是代码的第三次迭代,前两次尝试使用for循环 import java.util.Scanner; public class oddEvenZero { public sta
2^31-1
,并返回整数中的奇数、偶数和零数。例如
Input: 100
Output: 1 Odd, 0 Even, 2 Zeros // 1(Odd)0(Zero)0(Zero)
或
我很确定我想得太多了,但我不能让我的大脑慢下来。有人能帮忙吗?
这是代码的第三次迭代,前两次尝试使用for循环
import java.util.Scanner;
public class oddEvenZero
{
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
int value;
int evenCount = 0, oddCount = 0, zeroCount = 0;
System.out.print("Enter an integer: ");
value = scan.nextInt();
while (value > 0) {
value = value % 10;
if (value==0)
{
zeroCount++;
}
else if (value%2==0)
{
evenCount++;
}
else
{
oddCount++;
}
value = value / 10;
}
System.out.println();
System.out.printf("Even: %d Odd: %d Zero: %d", evenCount, oddCount, zeroCount);
}
}
对不起,文本框中的代码格式很奇怪
value = value % 10;
也许结局都是你的问题
如果value
为2034
,则value%10
返回4
。。。然后将该值分配给值
,您将通过if else
块,然后执行4/10
获取0
,并退出while循环
,而不寻址其他3位数字
我建议更像这样:
while (value > 0) {
if ((value%10)==0) {
zeroCount++;
}
else if (value%2==0) { //As per comment below...
evenCount++;
}
else {
oddCount++;
}
value /= 10;
}
或者,int thisDigit=value%10
,然后将当前if else
块中的value
替换为thisDigit
value = value % 10;
此语句将使用一个提醒覆盖原始的值,即值%10
如果value=2034
和value%10=4
,则value=4
不是您想要的
而是使用一个临时变量
int lastDigit = value % 10;
然后你的代码变成
while (value > 0) {
int lastDigit = value % 10;
if (lastDigit==0)
{
zeroCount++;
}
else if (lastDigit%2==0)
{
evenCount++;
}
else
{
oddCount++;
}
value = value / 10;
}
导入java.util.Scanner
公共类零
{
public int[]convertstringarraytintarray(String[]sarray)引发异常{
if(sarray!=null)
{
int k=sarray.length-1;
int intarray[]=新的int[k];
for(int i=1;i
}如果你们中的一些人仍然无法理解这段代码,我在四处搜索时发现了这段代码,效果很好:
import java.util.*;
public class Java_1
{
public static void main (String[] args)
{
String string;
int zero = 0, odd = 0, even = 0, length, left = 0;
Scanner scan = new Scanner(System.in);
System.out.print ("Enter any positive number: ");
string = scan.next();
length = string.length();
while (left < length)
{
string.charAt(left);
if (string.charAt(left) == 0)
zero++;
else if (string.charAt(left) % 2 == 0)
even++;
else
odd++;
left++;
}
System.out.println ("There are: "+ zero + " zeros.");
System.out.println ("There are: "+ even + " even numbers.");
System.out.println ("There are: "+ odd + " odd numbers.");
}
}
import java.util.*;
公共类Java_1
{
公共静态void main(字符串[]args)
{
字符串字符串;
int零=0,奇数=0,偶数=0,长度,左=0;
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入任何正数:”);
string=scan.next();
length=string.length();
while(左<长)
{
string.charAt(左);
if(string.charAt(左)==0)
零++;
else if(string.charAt(左)%2==0)
偶数++;
其他的
奇数++;
左++;
}
System.out.println(“有:“+zero+”zero.”);
System.out.println(“有:“+偶数+”偶数”);
System.out.println(“有:“+奇数+”奇数”);
}
}
0是一个偶数,你知道。这是刘易斯/洛夫图斯的一个图书作业。谢谢你的回答。你为什么要写(值%10)%2
?因为这比值%20
更清楚你实际上想做什么,谢谢。我没注意到。但是,现在它将0计算为偶数。我以为if-else块的逻辑结构会阻止这种情况发生?我不明白为什么它会这样做。。。在我能看到它之前,插入一个断点,看看它在做什么。但是(值%10)%2
不是值%20
-它只是值%2
。如果一个数字的最后一位是偶数,那么这个数字本身就是偶数。@nhgrif我很抱歉,先生。我希望将来能一起解决一个问题:)
public int[] convertStringArraytoIntArray(String[] sarray) throws Exception {
if (sarray != null)
{
int k= sarray.length-1;
int intarray[] = new int[k];
for (int i = 1; i < sarray.length; i++) {
intarray[i-1] = Integer.parseInt(sarray[i]);
}
return intarray;
}
return null;
}
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
String value;
System.out.print("Enter an integer: ");
value = scan.next();
String words[] = value.split("");
oddEvenZero obj = new oddEvenZero();
try{
int intarray[]= obj.convertStringArraytoIntArray(words);
int even_number =0;
int odd_number =0;
int zero_number =0;
for (int h: intarray)
{
if(h==0)
{
zero_number++;
}
else if(h%2==0)
{
even_number++;
}
else{
odd_number++;
}
}
System.out.println("even numbers are"+ even_number);
System.out.println("odd numbers are"+odd_number);
System.out.println("Zero numbers are"+zero_number);
}
catch(Exception ex)
{
System.out.println("Please enter number");
}
}
import java.util.*;
public class Java_1
{
public static void main (String[] args)
{
String string;
int zero = 0, odd = 0, even = 0, length, left = 0;
Scanner scan = new Scanner(System.in);
System.out.print ("Enter any positive number: ");
string = scan.next();
length = string.length();
while (left < length)
{
string.charAt(left);
if (string.charAt(left) == 0)
zero++;
else if (string.charAt(left) % 2 == 0)
even++;
else
odd++;
left++;
}
System.out.println ("There are: "+ zero + " zeros.");
System.out.println ("There are: "+ even + " even numbers.");
System.out.println ("There are: "+ odd + " odd numbers.");
}
}