Java - 错误 : cannot find symbol - presumably scoping issue

标签 java object scoping

这是我第一次在这里提问,如果我没有考虑到所有事情,请对我温和点。我会努力的。

针对实际问题。我最近才开始编写 Java,所以这可能是一些基本的东西,尽管我无法通过检查类似的问题来找出问题所在。

我敢打赌这个错误是由于范围界定问题引发的,但我不能确定,甚至不能修复它。

public static void main(String[] args){

    Artikel a = new Artikel();

    Scanner scanner = new Scanner(System.in);

    if (args.length !=8){
        System.out.println("Bitte geben Sie die folgenden Werte, getrennt mit einem ',' ein: Artikelname, Artikelnummer, Mengeneinheit, Packungsgröße, Mindestbestand, Bestellmenge, Lagerbestand, Hersteller");        
        String eingabe = scanner.next();
        String parts[] = eingabe.split(",");
        String string1 = parts[0];
        String string2 = parts[1];
        String string3 = parts[2];
        int int1 = Integer.parseInt(parts[3]);
        int int2 = Integer.parseInt(parts[4]);
        int int3 = Integer.parseInt(parts[5]);
        int int4 = Integer.parseInt(parts[6]);
        String string4 = parts[7];

        a.Artikel(string1, string2, string3, int1, int2, int3, int4, string4);
    }
    else{
        a.Artikel(args[0], args[1], args[2], Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6]), args[7]);
    }

这就是错误所指的位,特别是我尝试访问 a.Artikel(...) 的行。如果代码位不够用,请告诉我。

编辑:

public class Artikel{
private String Artikelname;
private String Artikelnr;
private String menge;
private int packgroesse;
private int mindestZahl;
private int bestell;
private int lager;
private String Hersteller;

//Defaultkonstruktor

public Artikel(){
    this.Artikelname = "Bez1";
    this.Artikelnr = "0";
    this.menge = "Beispiel";
    this.packgroesse = 0;
    this.mindestZahl = 0;
    this.bestell = 0;
    this.lager = 0;
    this.Hersteller = "Muster";
}

//Konstruktor

public Artikel(String Artikelname, String Artikelnr, String menge, int packgroesse, int mindestZahl, int bestell, int lager, String Hersteller){
    this.Artikelname = Artikelname;
    this.Artikelnr = Artikelnr;
    this.menge = menge;

    if(packgroesse < 0 ){
        System.out.println("Die Packungsgroesse kann nicht negativ sein! Der Wert wurde auf den Standardwert (10) gesetzt.");
    }
    else{
    this.packgroesse = packgroesse;
    }

    if(mindestZahl < 0 ){
        System.out.println("Der Mindestbestand kann nicht negativ sein! Der Wert wurde auf den Standardwert (30) gesetzt.");
    }
    else{
    this.mindestZahl = mindestZahl;
    }

    if(bestell < 0 ){
        System.out.println("Die Bestellmenge kann nicht negativ sein! Der Wert wurde auf den Standardwert (50) gesetzt.");
    }
    else{
    this.bestell = bestell;
    }

    if(lager < 0 ){
        System.out.println("Der Lagerbestand kann nicht negativ sein! Der Wert wurde auf den Standardwert (50) gesetzt.");
    }
    else{
    this.lager = lager;
    }

    this.Hersteller = Hersteller;
}

最佳答案

如果类 Artikel 被定义为具有接受各种参数的构造函数,例如:

public class Artikel {
  ...
  public Artikel (String s1, String s2, String s3, int i1, int i2, int i3, int i4, String s4) {
   // set the various values in the instance variables
   ...
  }
}

那么基于上述代码的解决方案如下:

public static void main(String[] args){

// CHANGE: just define
Artikel a;

Scanner scanner = new Scanner(System.in);

if (args.length !=8){
    System.out.println("Bitte geben Sie die folgenden Werte, getrennt mit einem ',' ein: Artikelname, Artikelnummer, Mengeneinheit, Packungsgröße, Mindestbestand, Bestellmenge, Lagerbestand, Hersteller");        
    String eingabe = scanner.next();
    String parts[] = eingabe.split(",");
    String string1 = parts[0];
    String string2 = parts[1];
    String string3 = parts[2];
    int int1 = Integer.parseInt(parts[3]);
    int int2 = Integer.parseInt(parts[4]);
    int int3 = Integer.parseInt(parts[5]);
    int int4 = Integer.parseInt(parts[6]);
    String string4 = parts[7];

    // CHANGE: instantiate here
    a = new Artikel(string1, string2, string3, int1, int2, int3, int4, string4);
}
else{
    // CHANGE: instantiate here
    a = new Artikel(args[0], args[1], args[2], Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6]), args[7]);
}

当然,这取决于 Artikel 类是如何定义的。

关于Java - 错误 : cannot find symbol - presumably scoping issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49801449/

相关文章:

java - 如何读取写在文件中的 LinkedHashMap?

java - 读取文件并创建数组

c# - 在 C# 中,如何根据这些对象的一个​​或多个属性比较两个对象列表?

java - 对象(KeyEvent 键)到字符串(Java)

r - update() 不适用于通过 lapply() 创建的模型

java - 如何使用 HSQL 设置数据源进行 junit 测试

java - 为什么特定的 Guava Stopwatch.elapsed() 调用比其他调用晚得多? (后期输出)

java - 如何将对象转换为Arraylist

r - 使用以编程方式构造的公式有什么陷阱吗?

javascript - 尝试在 Fancybox 回调中调用 CoffeeScript 方法时出现范围问题