java笔未使用的百分比
声明说:
一家钢笔制造商对其产品进行了自动化质量控制。当 pen符合最低要求,负责质量控制的单位写字母“S”,否则写字母“N”,最后定稿时写字母“F”。想想以后 设备的这些字符引入了“intro/enter”编写一个程序来计算 未达到最低制造要求的笔的百分比。想象上的 设备正确写入数据。(Boligrafos.java)
我把这个代码:
import java.util.Scanner;
public class Boligrafs {
public static void main ( String [] args ) {
Scanner sc = new Scanner (System.in);
String estat;
int contador1 = 0, contador2 = 0;
float percentatge;
System.out.println("Introdueix un estat del boligraf");
estat = sc.next();
while (estat == "S" || estat == "N") {
if (estat == "S"){
System.out.println("Introdueix un estat del boligraf");
estat = sc.next();
}
else if (estat == "N"){
System.out.println("Introdueix un estat del boligraf");
estat = sc.next();
contador1 = contador1 + 1;
}
contador2 = contador2 + 1;
}
if (estat == "F") {
System.out.println("Has finalitzat");
}
percentatge = 100 * contador1 / contador2;
System.out.println("El percentatge es:"+percentatge+"%");
}
}
我无法理解错误,因为我认为我的程序是正确的:
线程“main”java中出现异常。lang.arithmetricexception:/by零 在博利格拉夫斯。main(Boligrafs.java:32)
# 1 楼答案
正如Mike Laren所建议的,你可以使用estat。equals(“S”)用于字符串值比较和计算percenatge,请将计算部分代码放入if-else部分,如下所示
# 2 楼答案
问题是,您正在使用
==
将输入的字符串与程序中硬编码的字符串进行比较。用.equals()
替换所有==
,问题应该得到解决例如,将
estat == "S"
替换为estat.equals("S")