有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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)


共 (2) 个答案

  1. # 1 楼答案

    正如Mike Laren所建议的,你可以使用estat。equals(“S”)用于字符串值比较和计算percenatge,请将计算部分代码放入if-else部分,如下所示

    if(contador1>0 && contador2>0)
     {
       percentatge = 100 * contador1 / contador2;
     }
     else
     {
       System.out.println("your error message");
       percentatge=0.0;
     }
    
  2. # 2 楼答案

    问题是,您正在使用==将输入的字符串与程序中硬编码的字符串进行比较。用.equals()替换所有==,问题应该得到解决

    例如,将estat == "S"替换为estat.equals("S")