java中的异常:声明了变量,但编译器无法读取它
我有一个java程序,它有编译错误。我创建了两个类“magasin”和“produit”,类“magasin”包含一个“produit”列表java中的异常:声明了变量,但编译器无法读取它,java,Java,我有一个java程序,它有编译错误。我创建了两个类“magasin”和“produit”,类“magasin”包含一个“produit”列表 当我们创建一个“produit”时,可以抛出一个异常“ProdException” 当我们在“magasin”类的列表中添加“produit”时:可以抛出异常“prixException” 以下是“magasin”课程: /* * To change this license header, choose License Headers in Pro
- 当我们创建一个“produit”时,可以抛出一个异常“ProdException”
- 当我们在“magasin”类的列表中添加“produit”时:可以抛出异常“prixException”
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package GestionMag;
import GestionMag.Produit;
import static java.lang.System.in;
import java.util.Vector;
/**
*
* @author USER
*/
public class Magasin {
private int id;
private String adresse;
private final int capProd=2;
private Vector<Produit> prod = new Vector<Produit>();
private int nbProd;
private final int capEmp=20;
private Vector<Employe> emp = new Vector<Employe>();
public Magasin(){}
public Magasin(int a,String b)
{
id=a;
adresse=b;
nbProd=0;
}
public int getId(){return id;}
public String getAdresse(){return adresse;}
public int getCapProd(){return capProd;}
public void setId(int a){id=a;}
public void setAdresse(String a){adresse=a;}
@Override
public String toString()
{
return "\n id"+id+" adresse:"+adresse+" capProd"+capProd+"nbPrd="+nbProd;
}
public void afficher()
{
System.out.println(this.toString());
System.out.println("----------Produits");
for(Produit p : prod)
{
System.out.println(p.toString());
}
System.out.println("----------Employes");
for(Employe p : emp)
{
System.out.println(p.toString());
}
}
public boolean rechercher(Produit p)
{
return prod.contains(p);
}
public boolean chercherEmp(Employe e)
{
return emp.contains(e);
}
public boolean ajouterEmp(Employe e)
{
if(!chercherEmp(e))
{emp.add(e);
return true;}
return false; }
public boolean ajouterProd(Produit p) throws ExceptionProd
{ if (nbProd>=capProd)
throw new ExceptionProd();
if(!this.rechercher(p))
{
prod.add(p);
nbProd++;
return true;
}
return false;
}
public void supprimerProd(Produit p)
{
prod.remove(p);
}
public void supprimerEmp(Employe p)
{
emp.remove(p);
}
}
/*
*要更改此许可证标题,请在“项目属性”中选择“许可证标题”。
*要更改此模板文件,请选择工具|模板
*然后在编辑器中打开模板。
*/
包装管理杂志;
进口管理杂志产品;
导入静态java.lang.System.in;
导入java.util.Vector;
/**
*
*@author用户
*/
公共级Magasin{
私有int-id;
私人字符串地址;
私人最终int capProd=2;
私有向量prod=新向量();
私人国际nbProd;
私人最终int capEmp=20;
私有向量emp=新向量();
公共Magasin(){}
公共Magasin(整数a,字符串b)
{
id=a;
adresse=b;
nbProd=0;
}
public int getId(){return id;}
公共字符串getAddresse(){return adrese;}
public int getCapProd(){return capProd;}
public void setId(int a){id=a;}
public void setadrese(字符串a){adrese=a;}
@凌驾
公共字符串toString()
{
返回“\n id”+id+“adrese:”+adrese+“capProd”+capProd+“nbPrd=“+nbProd;
}
公共无效附加条款()
{
System.out.println(this.toString());
System.out.println(“------------Produits”);
用于(产品p:prod)
{
System.out.println(p.toString());
}
System.out.println(“------------雇员”);
对于(雇员p:emp)
{
System.out.println(p.toString());
}
}
公共布尔寄存器(Produit p)
{
返回产品包含(p);
}
公共布尔Cheremp(雇员)
{
返回emp.contains(e);
}
公共布尔ajouterEmp(雇员)
{
如果(!cheremp(e))
{行政长官增补(e);
返回true;}
返回false;}
公共布尔值ajouterProd(Produit p)抛出异常prod
{if(nbProd>=capProd)
抛出新的ExceptionProd();
如果(!this.rechercher(p))
{
产品添加(p);
nbProd++;
返回true;
}
返回false;
}
公共无效供给棒(产品p)
{
产品移除(p);
}
公共无效供应员(雇员p)
{
emp.remove(p);
}
}
以下是“produit”类:
package GestionMag;
import java.util.Date;
import GestionMag.PrixException;
/**
*
* @author USER
*/
public class Produit {
private int id;
private String libelle;
private String marque;
private double prix;
private Date dateExp;
public Produit(){};
public Produit(int a,String b,String c,Date d)
{
id=a;
libelle=b;
marque=c;
dateExp=d;
}
public Produit(int a,String b,String c,double e,Date d) throws PrixException
{
if(prix<0)
throw new PrixException();
else{
id=a;
libelle=b;
marque=c;
prix=e;
dateExp=d;
}
}
@Override
public String toString()
{
return "id="+id+" libelle:"+libelle+" marque:"+marque+" prix"+prix+" DateExpiration"+dateExp;
}
public int getId(){return id;}
public String getLibelle(){return libelle;}
public String getMarquue(){return marque;}
public double getPrix(){return prix;}
public Date getDateExp(){return dateExp;}
public void setId(int a){id=a;}
public void setLibelle(String a){libelle=a;}
public void setMarque(String a){marque=a;}
public void setPrix(double a)throws PrixException
{ if(prix<0)
throw new PrixException();
else
prix=a;
}
public void setDateExp(Date d){dateExp=d;}
@Override
public boolean equals(Object o)
{
if(o==null)
{return false;}
if(o.getClass()!=this.getClass())
return false;
if(o.getClass()==this.getClass())
{
Produit p=(Produit)o;
if(p.getId()==this.getId())
return true;
else
return false;
}
return false;
}
}
package-GestionMag;
导入java.util.Date;
导入GestionMag.PrixException;
/**
*
*@author用户
*/
公共类产品{
私有int-id;
私串诽谤;
私人字符串品牌;
私人双大奖赛;
私人日期日期;
公共产品{};
公共产品(整数a、字符串b、字符串c、日期d)
{
id=a;
诽谤=b;
品牌=c;
dateExp=d;
}
公共Produit(int a、字符串b、字符串c、双精度e、日期d)抛出PrixException
{
如果(prix简而言之,您正在尝试这样做:
try {
Produit p2 = new Produit(2222, "lait", "delice", -22, d);
} catch (PrixException e) {
System.out.println("erreur prix < 0");
}
try {
m.ajouterProd(p2);
} catch (ExceptionProd e) {
System.out.println("erreuuur");
}
可能的解决办法2:
在单个try
块中执行代码,并一次捕获多个异常
try {
Produit p2 = new Produit(2222, "lait", "delice", -22, d);
m.ajouterProd(p2);
} catch (PrixException e) {
System.out.println("erreur prix < 0");
} catch (ExceptionProd e) {
System.out.println("erreuuur");
}
试试看{
产品p2=新产品(2222,“lait”、“delice”、-22,d);
m、 ajouterProd(p2);
}捕获(PrixException e){
系统输出打印项次(“错误优先级<0”);
}捕获(例外产品e){
System.out.println(“erreuur”);
}
Hi,欢迎使用Stack Overflow。您需要将源代码减少到演示问题的最低限度。提示:当编译器拒绝编译您的类时,尝试运行该类是没有意义的。谢谢Mark,我理解这个问题,它现在可以工作了。
Produit p2 = null;
try {
p2 = new Produit(2222, "lait", "delice", -22, d);
} catch (PrixException e) {
System.out.println("erreur prix < 0");
}
try {
m.ajouterProd(p2);
} catch (ExceptionProd e) {
System.out.println("erreuuur");
}
try {
Produit p2 = new Produit(2222, "lait", "delice", -22, d);
m.ajouterProd(p2);
} catch (PrixException e) {
System.out.println("erreur prix < 0");
} catch (ExceptionProd e) {
System.out.println("erreuuur");
}