import java.util.Scanner;
public class FileOutputStreamExample
{
public static int count;
public void equation(int a, int b,int c)
{
int e=(b*b)-(4*a*c);
double f=Math.pow(e,1/2);
if(f>=0)
count=count++;
}
public static void main (String []args)
{
FileOutputStreamExample fos= new FileOutputStreamExample();
Scanner sc= new Scanner(System.in);
int N= sc.nextInt();
for(int i=1;i<=N;i++)
{
int a= sc.nextInt();
int b= sc.nextInt();
int c= sc.nextInt();
fos.equation(a, b, c);
}
System.out.println("ans is "+count);
}
}
这里我正在编写一个代码来检查给定N个输入的二次方程是否具有系数a,b,c然后有多少给定的N个输入具有实根。 此代码编译尽可能好,但始终导致ans = 0。在这种情况下,计数不起作用。
答案 0 :(得分:4)
count=count++;
这条线实际上什么也没做。它递增count
,但它也返回一个值作为表达式,然后将其存储回count
。由于++在最后,所存储的值是count的原始值,因此撤消增量。 :)
使用递增(或递减)运算符时,不必使用赋值运算符来修改该值。增量本身意味着对变量的修改。
通过将其更改为:count++;
除此之外,1/2
将始终等于零,因为操作数是整数,因此,应用的除法是整数除法(截断小数部分)而不是除法可能期待。
将其更改为1.0/2
或.5
答案 1 :(得分:0)
我不认为你的代码应该被编译。您正在非静态方法中调用静态变量。 此外,写入计数++,计数+ = 1或计数=计数+ 1。