我正在制作一个程序,该程序接受用户输入,以减去用户所需的所有数字
我首先让程序询问用户想要减去多少个数字,并初始化int inputNum中的值,然后将其传递给for循环for(int Count=1;Count<=inputNum;Count++),以便程序根据inputNum循环用户输入。
不幸的是,输出是错误的。我不明白这怎么能正常工作。
我尝试通过使difference=-toBeSubtracted来切换difference中的运算符到差-=到BeSubtracted
对于差值=-toBeSubtracted,这是一个示例输出
run:
How many numbers do you want to subtract?
2
Input numbers you want to subtract:
10
5
The difference of those numbers is -5
对于差-=到BeSubtracted,这是一个示例输出
run:
How many numbers do you want to subtract?
2
Input numbers you want to subtract:
10
5
The difference of those numbers is -15
这是代码:
import java.util.*;
public class ForLoops_Difference
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("How many numbers do you want to subtract? ");
int inputNum = scan.nextInt();
int difference = 0;
System.out.println("Input numbers you want to subtract: ");
for (int Count = 1 ;Count<=inputNum; Count++)
{
int toBeSubtracted = scan.nextInt();
difference =- toBeSubtracted;
}
System.out.println("The difference of those numbers is " + difference);
}
}
好的,这可能会帮助你:
difference = 0
比你有:
difference -= toBesubtracted
所以你要做的是:
difference = difference - toBeSubtracted
就而言
difference = 0 - 10
difference = -10 - 5
这样你就可以得到-15
以及哪里有
difference =- toBeSubtracted
它与相同
difference = -1 * toBeSubtracted
这样你就可以得到-5
我想你想要5的输出。这是您的代码,只需更改一次
import java.util.*;
public class ForLoops_Difference
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("How many numbers do you want to subtract? ");
int inputNum = scan.nextInt();
int difference = scan.nextInt(); // so read in the first number here.
System.out.println("Input numbers you want to subtract: ");
for (int Count = 1;Count<inputNum; Count++) // go till from 1 to inputNum - 1 because you have already got one number above
{
int toBeSubtracted = scan.nextInt();
difference -= toBeSubtracted;
}
System.out.println("The difference of those numbers is " + difference);
}
}
您需要了解运算符的简写表示法。你应该写-=作为减号的简写。简写等于difference=difference-tobstrated。由于初始值为0,因此它变为0-10-5=-15。
将第一个值指定为差,然后对下一个值进行减法运算。
所以类似于:
difference = scanner.nextInt();
然后对剩余的值进行循环,使其从初始值减去。
问题不在于程序工作不正确。
问题是这些要求是无稽之谈。你可以算出两个数字的差值。19和8之间的差是11。3个或3个以上的数字之间没有区别。因此,任何程序都无法产生这种效果。
也就是说,Davis-Hering的评论是正确的:没有=-
运算符。你试着在行中使用一个:
difference =- toBeSubtracted;
但这条线被理解为:
difference = -toBeSubtracted;
所以你的程序只输出最后输入的数字的负数。我试着输入三个数字,11、3和5。第一次通过循环的时间差设置为-11。下次该值被覆盖时,将改为设置-3。在最后一次迭代中,差值被设置为-5,即"获胜"并输出。
相反,我建议你的程序应该总是减去2个数字,就像你在例子中尝试的那样。因此,用户不需要输入数字的数量,只需被告知输入两个数字即可。那么你也不需要任何循环。只需读取第一个数字,读取第二个数字,从第一个数字中减去第二个(或从第二个中减去第一个,或从较大的数字中减去较小的数字,这是你想要的),然后打印结果。我把编码留给你,以免破坏它。
我做了这个
import java.util.*;
public class ForLoops_Difference
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("How many numbers do you want to subtract? ");
int inputNum = scan.nextInt();
int difference = 0;
int currentNumber = 0; //current number from scanner
System.out.println("Input numbers you want to subtract: ");
for (int Count = 1 ;Count<=inputNum; Count++)
{
if(Count == 1)
{
//nothing to subtract if count is 1
currentNumber = scan.nextInt();
difference = currentNumber;
}
else {
currentNumber = scan.nextInt();
difference = difference - currentNumber;
}
}
System.out.println("The difference of those numbers is " + difference);
}
}
你的差异始于0。所以,如果你减去两个数字,15和3,那么你会得到0-15-3=-18。我将差值设置为第一个数字,即第一个循环中的15。然后它应该正确工作,因为你做了15-3=12。