Java编程:如何为接受用户输入的循环程序正确地减去输入



我正在制作一个程序,该程序接受用户输入,以减去用户所需的所有数字

我首先让程序询问用户想要减去多少个数字,并初始化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。

相关内容

  • 没有找到相关文章

最新更新