在循环java时访问外部计数器

在循环java时访问外部计数器,java,while-loop,counter,Java,While Loop,Counter,我得到的错误是除以0 这是由于totDrivers的值造成的。我不确定这是否是因为计数器在循环过程中没有更新。或者是因为totDrivers我从循环外部错误地访问变量 我读过的其他帖子说,要访问循环外的变量,需要在循环外对其进行初始化。但它没有说明这样做是否会产生计数器更新值 [Exception in thread "main" java.lang.ArithmeticException: / by zero at Statistics.main(Statistics.java:84)]

我得到的错误是除以0

这是由于
totDrivers
的值造成的。我不确定这是否是因为计数器在循环过程中没有更新。或者是因为
totDrivers
我从循环外部错误地访问变量

我读过的其他帖子说,要访问循环外的变量,需要在循环外对其进行初始化。但它没有说明这样做是否会产生计数器更新值

[Exception in thread "main" java.lang.ArithmeticException: / by zero
at Statistics.main(Statistics.java:84)]

import java.util.Scanner;
公共课统计
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
//计数器初始化
int f=0;//女性
int m=0;//男性
int u=0;//未指定
int u25=0;//年龄小于25岁
int mu=0;//男性和25岁以下
int bt=0;//介于25和75之间
int ab=0;//大于75
int y=0;//res
int n=0;//非res
int年龄=0;
字符串性别=“U”;
字符串nlRes=“Y”;
int=0;
while(年龄!=0)
{
totDrivers++;
System.out.print(“请输入年龄\\(如果没有更多输入,请输入0\):”;
年龄=in.nextInt();
系统输出打印(“请输入性别(M、F或U):”;
性别=in.next();
系统输出打印(“请输入性别:”;
nlRes=in.next();
如果(年龄=25岁和75岁)
{
ab++;
}
if(性别平等(“M”))
{
m++;
}
else if(性别平等(“F”))
{
f++;
}
else if(性别平等(“U”))
{
u++;
}
如果(nlRes.等于(“Y”))
{
y++;
}
else如果(nlRes.等于(“N”))
{
n++;
}
系统输出打印项次(“totd”+totDrivers);
}
//输出
双perU25=(u25/totDrivers)*100;
双坡25=(亩/米)*100;
双性能=(f/f)*100;
双perNonNL=(n/totDrivers)*100;
双倍以上=(ab/TOT)*100;
System.out.println(“25岁以下驾驶人的百分比为:%”+25);
System.out.println(“25岁以下男性驾驶人的百分比为:%”+perMU25);
System.out.println(“内螺纹驱动器的百分比为:%”+性能);
System.out.println(“省外司机的百分比为:%”+perNonNL);
System.out.println(“75岁以上驾驶人的百分比为:%”+以上);
}
}

在进行除法之前,只需检查计数器是否为0

if(m != 0)
{
double perMU25=(mu/m)*100;
}

如果这样做了,那么就会出现一个错误,说它找不到变量,这是因为它没有进入循环。这意味着totDrivers没有更新,我无法找出原因,因为您的年龄设置为0,并且您的循环在年龄=时执行0哪一行失败了?我不认为第84行除以了
totDrivers
。一个简单的
if(totDrivers>0&&m>0){//doyour math}
就能解决你的问题。你有没有想过也许代码永远不会进入你的循环?
if(m != 0)
{
double perMU25=(mu/m)*100;
}