我在写一个程序,你输入两个除数,你要检查的数字列表可以被你输入的两个数字整除。
下面是一个输出的示例:
Please input a command: A
A [Create a new divisible test]
[Type two divisors]: 2 6
[Input a list of numbers in one single line]: 2 4 6 9 15 18 19 25 30
Please input a command: D
D [Display the information]
( 2 4 6 9 15 18 19 25 30 ) are numbers to check
( 2 4 6 18 30 ): are divisible by 2
( 6 18 30 ): are divisible by 6
( 6 18 30 ): are divisible by both 2 and 6
我的问题是它不会检查哪个数可以被两个除数整除,而是打印出来
( 2 4 6 9 15 18 19 25 30 ) are numbers to check
( 2 4 6 9 15 18 19 25 30 ): are divisible by 2
( 2 4 6 9 15 18 19 25 30 ): are divisible by 6
( 2 4 6 9 15 18 19 25 30 ): are divisible by both 2 and 6.
这是我的代码:
class Divisible {
private int divisor1;
private int divisor2;
public String numbers;
public Divisible() {
divisor1 = (Integer) null;
divisor2 = (Integer) null;
numbers = " ";
}
public Divisible(int div1, int div2, String num) {
this.divisor1 = div1;
this.divisor2 = div2;
this.numbers = num;
}
private boolean isDivisible1(int input) {
boolean isDivisible1 = true;
return (input % divisor1 == 0);
}
private boolean isDivisible2(int input) {
boolean isDivisible2 = true;
return (input % divisor2 == 0);
}
public String printDivisible1() {
if (this.isDivisible1(divisor1)) {
System.out.println();
System.out.println("are divisible by " + divisor1);
}
return numbers;
}
public String printDivisible2() {
if (this.isDivisible2(divisor2)) {
System.out.println(" are divisible by " + divisor2);
}
return numbers;
}
public String printDivisibleBoth() {
if (this.isDivisible1(divisor1) && this.isDivisible2(divisor2))
System.out.println(" are divisible by " + divisor1 + " and " + divisor2);
return numbers;
}
}
在我看来,你的代码中缺少了几个步骤!
为了解决这个问题,我们需要:
>
将数字串拆分,并将其转换为整数,然后将其输入列表或数组。
打印时遍历此列表,应用您的isDi可见()
函数来确定它是否应该输出。
首先,我想也许我们可以让你的程序更模块化一点。特别是你的isDi可见(int输入)
函数可以改变成这样:
private boolean isDivisible(int input, int divisor) {
return (input%divisor==0);
}
这意味着我们可以对两个除数使用相同的函数!比如isDivisble(30,6)
和isDivisble(30,2)
现在我们需要关注你要检查的一串数字。你会注意到我们的新函数要求输入一个整数,但我们目前有一个包含所有数字的巨大字符串。我们可以尝试以下功能:
String[] numArray = num.split(" ");
将字符串'num'拆分为多个片段,只要有空格(“”),然后将这些片段放入'numArray'数组的元素中。
好了,现在我们有了输入数组。剩下的就是将这些元素转换成整数,这样它们就可以用作我们的isDivisible()
函数的输入。我们可以使用整数。valueOf(str s)
函数执行此操作!
这就是我们完成这个问题所需的所有工具!综合起来,一个粗略的解决方案看起来像:
String[] numArray = num.split(" ");
for (int i = 0; i < numArray.length; i++) {
if (isDivisible(Integer.valueOf(numArray[i]), div1)) {
System.out.print(numArray[i] + " ");
}
}
System.out.println("): are divisible by " + div1);
更新
没有阵列!?好的,在这种情况下,我想你的老师希望你迭代输入,检查它们是否可除,如果可以,连接一些输出字符串。
因此,让我们从添加几个字符串开始,这些字符串稍后将成为我们的输出到代码顶部:
class Divisible {
private String outputDiv1 = "( ";
private String outputDiv2 = "( ";
private String outputBoth = "( ";
现在,对于这些输出中的每一个,我们只想连接可除数。我们可以在不使用数组的情况下通过循环字符串num的字符来实现这一点,并在找到如下空格时将数字拆分:
//Since we're checking for spaces, we should probably add one to the end of our string, so we can find the last number!
num += " ";
//We need to keep a record of the previous space!
int lastSpace = -1;
for (int i = 0; i < num.length(); i++) {
if (num.charAt(i) == ' ') {
//If the current character is a space, we know everything before it and the last space was a number
//Our logic will go here!
//Currently converts our string into an Integer and prints it out
int currentNumber = Integer.parseInt(num.substring(lastSpace, i));
System.out.println(currentNumber);
//Update where the last space we found was
//The '+ 1' is so we skip the spaces!
lastSpace = i + 1;
}
}
好的,不,我们正在遍历字符串,并在不使用任何数组的情况下将其拆分!剩下要做的就是应用我们之前制作的工具isDivisible()
。
比如:
if (isDivisible(currentNum, div1)) {
outputDiv1 += currentNum;
}
可以放入//我们的逻辑到这里
部分来确定是否应该将一个数字添加到我们的输出列表中!
最后,我们打印完成的列表:
System.out.println(outputDiv1 + " ): are divisble by " + div1);
格式如下所示: 输入:第一行包含一个整数T,表示测试用例的数量。第二行包含三个整数a、b和N 输出:对于每个测试用例,在新行中打印第N个数字。 样本输入 1 2 3 10
问题内容: 我正在使用AndEngine将精灵添加到屏幕上,并使用movemodifier方法遇到。 我有两个整数MaxDuration和MinDuration; 我想要做的是当用户达到一定增量的分数时。 例如,当用户达到20(整数改变)时,用户达到40(整数改变)。因此,基本上是20分,每次得分遇到一个20分之一的数字,即整数的变化。我希望这是有道理的。 有什么方法或方法可以做到这一点吗?我有一
问题内容: 我需要测试从1到1000的每个数字是3的倍数还是5的倍数。我认为我要这样做的方式是将数字除以3,如果结果是整数,则它将是3的倍数。与5相同。 如何测试数字是否为整数? 这是我当前的代码: 问题答案: 您可以使用模运算符执行此操作, 当且仅当是的精确倍数时,计算结果为true 。在小学数学中,这被称为除法运算的余数。 在您当前的方法中,您执行除法,结果将是 如果使用整数除法,则始终为整数
我需要检查用户输入的内容是否正确。如果不是,我需要以msgbox的形式打印错误。 上面的代码似乎不起作用。 有什么想法吗?
问题内容: 我知道我可以这样做: 然后只需编写语句中所需的代码。 还有其他方法可以检查它们是否相等? 问题答案: 怎么了 if(!Arrays.equals(array1,array2)) 与相同,即是同一数组。这不是大多数人期望的。 比较数组的内容。
我正在尝试创建一个简单的程序来验证用户的输入是否为正整数。但是,在使用Scanner.hasNextInt()方法时遇到了一个问题。如果输入包含一个整数,比如“5个6”,我的程序将把6读入为一个整数。但是,我希望这样的语句无效,并提示用户只需要输入一个整数值。因此程序将输出“请输入整数值:”。 这就是我的程序的样子: 编辑:我理解next()与nextLine()之间的区别。然而,我的问题是实际仅