我必须编写一个读取3个数字的程序(使用输入框),根据它们的值,它应该写下以下消息之一:
这是我到目前为止所做的:
import javax.swing.JOptionPane;
class program3
{
public static void main(String[] args)
{
String num1 = JOptionPane.showInputDialog("Enter first number.");
String num2 = JOptionPane.showInputDialog("Enter second number.");
String num3 = JOptionPane.showInputDialog("Enter third number.");
boolean newnum1 = Integer.parseInt(num1);
boolean newnum2 = Integer.parseInt(num2);
boolean newnum3 = Integer.parseInt(num3);
}
}
这是我被困的地方。我不知道如何使用MOD来显示消息。我想我也必须使用IF声明......但我不太确定。
请帮忙! :d
答案 0 :(得分:10)
在Java中,模数运算符为%
。您可以像这样使用它:
if ( (a % 2) == 0) {
System.out.println("a is even");
}
else {
System.out.println("a is odd");
}
将它与一些if语句或一些计数器结合使用以实现最终结果。
PS:newnumX的类型看起来很奇怪:)
答案 1 :(得分:5)
我建议你
开始在一张纸上写下你将如何手动完成。 (写算法)
然后确定哪些部分是“可编程的”哪些部分不是(识别变量,语句等)。
手动尝试不同的数字,看看它是否有效。
从那里我们可以帮助您将这些想法转化为工作代码(这很容易)。
这些是您必须掌握的基础编程技能。
我们不值得回答:
boolean areAllEven = ( one % 2 == 0 ) && ( two % 2 == 0 ) && ( three % 2 == 0 ) ;
boolean areAllOdd = ( one % 2 != ..... etc etc
因为我们会帮助你。
相关条目:Process to pass from problem to code. How did you learn?
答案 2 :(得分:1)
为了避免丑陋的嵌套IF,我会声明一个小计数器(伪代码):
if newnum1 mod 2 == 1 then oddcount += 1;
etc...
switch oddcount
case 0:
print "All three numbers are even"
etc...
答案 3 :(得分:0)
记下执行任务所需的基本步骤,然后尝试在代码中实现它。
以下是您需要做的事情:
1 - 从用户那里获得3个号码。
2 - 您需要两个变量:一个用于保存奇数输入的数量,另一个用于保存偶数的变量。让我们称之为evenCnt和oddCnt。 (提示:既然你知道你只有3个数字,一旦你确定了其中一个,另一个只是与3的区别)
3 - 然后你需要进行一系列测试(如果evenCnt为3然后显示“3 evens”,否则如果....)
(Pascal和Kurosch几乎已经为你提供了填写第2步和第3步所需的片段。)
[编辑:我的#2是毛茸茸的。你只需要一个变量。]
答案 4 :(得分:0)
你走了。我刚编译并运行了一些测试用例来确认它是否有效。
import javax.swing.JOptionPane;
class Program3 {
public static void main(String[] args) {
int evenCount = 0;
for (int i=0; i<3; i++) {
// get the input from the user as a String
String stringInput = JOptionPane.showInputDialog("Enter number " + (i+1) + ".");
// convert the string to an integer so we can check if it's even
int num = Integer.parseInt(stringInput);
// The number is considered even if after dividing by 2 the remainder is zero
if (num % 2 == 0) {
evenCount++;
}
}
switch (evenCount) {
case 3:
System.out.println("All are even");
break;
case 2:
System.out.println("Two are even, one is odd");
break;
case 1:
System.out.println("One is even, two are odd");
break;
case 0:
System.out.println("All are odd");
break;
}
}
}
顺便说一句:我将类名称大写,因为最好的做法是在Java中这样做。
答案 5 :(得分:0)
如果您选择在Java中使用%
运算符,则只是一个警告:如果其左侧操作数为负数,则会产生负数。 (参见language specification)也就是说,(-5) % 2
生成结果-1。
您可能需要考虑按位操作,例如“x&amp; 1”测试偶数/奇数。
答案 6 :(得分:0)
它比这更简单,你有树数a,b,c
n = a%2 + b%2 +c%2
switch (n):
case 0: 'three are even'
case 1: 'one is odd'
case 2: 'one is even'
case 3: 'three are odd'
瞧!
答案 7 :(得分:0)
我不同意alphazero。我不认为有两个变量是必需的。每个数字都是永远或奇数。所以保持一个就足够了。
至于Asaph的代码,我认为它有很好的文档记录,但是如果你仍然需要解释,请点击这里:
这就是for循环的作用:
读取(作为字符串)3个数字的用户输入
Integer.parseInt
是一个以String
作为参数(例如'4'
)并返回int
(在此示例中为4
)的函数。然后,他通过将其修改为2来检查这个整数是否均匀。基本思路是:4%2 = 0和9%2 = 1(当用作a%b
时,mod运算符给出了操作后的余数{{ 1}}。因此,如果a/b
为0,则a为偶数。有一个计数器(称为a%2
)可以跟踪多少个整数是偶数的(基于evenCount
测试)。
%s
上做切换声明。 switch语句有点像if-else语句。它的工作方式是通过针对案例值(在本例中为3,2,1,0)测试switch参数(在本例中为evenCount
)。如果测试返回True,则执行case块中的代码。如果在该case块的末尾没有break语句,那么,也会执行以下case块中的代码。
在这里,Asaph通过将evenCount与0,1,2和3进行比较,然后使用适当的打印语句告诉用户有多少偶数来检查看多少个数字
希望这有帮助