Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 减数_Java_Oop_Methods_Subtraction - Fatal编程技术网

Java 减数

Java 减数,java,oop,methods,subtraction,Java,Oop,Methods,Subtraction,我正试图写一个方法,将减去多个数字,而不是只使用2个输入数字 到目前为止我已经 public void getSub() { Scanner in = new Scanner(System.in); System.out.print("Please enter the number: "); double value = in.nextDouble(); double difference = 0; while(i

我正试图写一个方法,将减去多个数字,而不是只使用2个输入数字

到目前为止我已经

public void getSub() {
        Scanner in = new Scanner(System.in);
        System.out.print("Please enter the number: ");
        double value = in.nextDouble();
        double difference = 0;

        while(in.hasNextDouble()) {
            System.out.print("Please enter the next number: ");
            double valueTwo = in.nextInt();
            difference = value - valueTwo;
        }
        System.out.println("Difference: " + difference);
    }

这目前只适用于2个输入,但我的最终目标是能够继续减去多个数字

而不是从
中连续减去,而是从
差值

更改<代码>差异=值-值二
差异-=valueTwo


这相当于执行
((A-B)-C)-…
,A是第一个输入,B是第二个输入,C是第三个输入…

此解决方案在第一个输入后不会挂起。它更方便用户

public void getSub() {
    Scanner in = new Scanner(System.in);
    System.out.print("Please enter the number: ");

    double difference = in.nextDouble();

    while(in.hasNextDouble()) {
        System.out.print("Please enter the next number: ");
        difference -= in.nextDouble();
    }
    System.out.println("Difference: " + difference);
}
public static void getSub() {
        Scanner in = new Scanner(System.in);
        System.out.print("Please enter the next number: ");
        double difference = 0.0;
        while(in.hasNextDouble()) {
            System.out.print("Please enter the next number: ");
            difference -= in.nextDouble();
        }
        System.out.println("Difference: " + difference);
    }

为什么有两个变量?无论如何,以下内容更简单,提示正确:

Scanner in = new Scanner(System.in);
System.out.print("Please enter the number: ");
double value = in.nextDouble();
while (true) {
    in.nextLine(); // Silently discard rest of line
    System.out.print("Please enter the next number, or . to stop: ");
    if (! in.hasNextDouble())
        break;
    value -= in.nextDouble();
}
System.out.println("Difference: " + value);
试验

请输入号码:10
请输入下一个号码,或。停止:1
请输入下一个号码,或。停止:2
请输入下一个号码,或。停止:3
请输入下一个号码,或。停止:。
差异:4.0
这应该可以正常工作


为什么你要检查是否有下一个
双精度
,然后读取
int
?你的问题是什么?@CPerkins我猜问题是为什么它没有按照创造者的期望工作work@phflack他没有说什么不对。他没有说这有什么不同。我不打算读他的心思,我们也不应该读。我试着要求清楚,但没有,我现在投票决定结束。@CPerkins我同意它的措辞很糟糕,这就是为什么我们必须猜测最一般的东西,才能在猜测中正确。我们所知道的是,它可能没有按照OP希望的方式工作,但我们不知道如果不清楚
difference-=valueTwo
是什么缩写,那么期望的最终结果可能是什么“从
difference
中减去
valueTwo
,并将结果分配给
difference
。您正在打印
请输入下一个数字:
在第一次输入时,应使用第一次打印提示用户输入值以初始化
difference
#include <stdio.h>

int main()
{
    int result=0, n,number,i;
    printf("How many numbers you want to use?\n");
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d", &number);
        if(i ==0 ){
            result=number;
        }
        else{
            result -= number;
        }
    }
    printf("Answer is= %d ", result);
    return 0;
}
How many numbers you want to use?                                                       
4  
                                                                                     
55                                                                                      
34                                                                                      
1                                                                                       
3                                                                                       
Answer is= 17