有 Java 编程相关的问题?

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

visual studio代码Java错误,Java中的重复变量错误,无法从字符串转换为类

我正试图调试我的代码中的一个错误(我对Java还是很陌生)来完成一个任务

public static void main(String[] args) throws Exception {
    System.out.println("Hi, Welcome!");
    
    Scanner inpt = new Scanner(System.in); 
    System.out.print("What can I call u? : ");
    String user = inpt.nextLine();
    Pelanggan user = new Pelanggan();
    }

“Pelanggan”是我制作的课程的名称。 我想把user的值赋给Pelanggan类,但我得到了这个错误

Duplicate local variable user

然后我试着把代码改成这个

public static void main(String[] args) throws Exception {
    System.out.println("Hi, Welcome!");
    
    Scanner inpt = new Scanner(System.in); 
    System.out.print("What can I call u? : ");
    Pelanggan user = inpt.nextLine();
    user = new Pelanggan();
    }

然后我犯了这个错误

Type mismatch: cannot convert from String to Pelanggan

我试图寻找解决方案,但仍然没有找到一个解决方案,这是我的代码

我该怎么解决这个问题

任何帮助都将不胜感激! 谢谢!


共 (3) 个答案

  1. # 1 楼答案

    Java中的指针有三个部分

    Type name = value;
    
    • Type是指针将要保存的数据类型

    • name是我们在代码中寻址指针的方式

    • value是指针指向的数据

    当你声明一个指针

    String user = "John Doe";
    

    你告诉编译器两件事

      1. 我有一个指向字符串对象的指针
      1. 我将把这个字符串称为user

    现在,您可以在需要字符串数据类型的任何地方使用user中存储的值。但是,您不能再声明另一个

    MyClass user = new MyClass();
    

    现在,编译器感到困惑,因为您已经定义了一个名为user的指针,所以会出现重新声明错误。(范围在这里很重要,因为您可以在不同的范围中再次定义它,但这超出了本答案的范围)

    你的第二个问题呢

    您完全可以更改指针的值(如果它不是最终指针),但是

    String user = "John Doe";
    user = new MyClass();
    

    不会编译,因为您告诉编译器user是对字符串的引用。MyClass不是字符串(如果它是字符串的子类,则可能是字符串,但这又超出了本答案的范围),因此它会给您一个类型不匹配错误

    简单的答案就是为每个指针使用不同的名称。如果您真的希望对Palanggan实例的引用是user,那么将字符串指针命名为其他名称

  2. # 2 楼答案

    检查退货类型: 字符串java。util。扫描仪。nextLine()

    所以最好在Pelanggan类中设置变量,并在方法或构造函数中设置

  3. # 3 楼答案

    假设Pelanggan类,应该在Pelanggan类中创建一个String字段,并按如下方式实现:

    public class Pelanggan {
       String name;
    
       Pelanggan(String name) {
           this.name = name
       }
    }
    

    代码的主要部分:

    public static void main(String[] args) throws Exception {
        System.out.println("Hi, Welcome!");
        
        Scanner inpt = new Scanner(System.in); //variabel simpan inputan nama user 
        System.out.print("What can I call u? : ");
        Pelanggan user = new Pelanggan(inpt.nextLine());
        }
    

    Pelanggan类可能与我假设的解决方案不同。其主要思想是:如果您想在类中存储String,可以将其存储为字段,并将其作为参数提供给类的构造函数