【问题标题】:error : cannot find symbol (dataOutputStream out) [duplicate]错误:找不到符号(dataOutputStream out)[重复]
【发布时间】:2021-11-21 16:15:38
【问题描述】:

我是 Java 新手,对网络编程不是很精通。我有这个我无法解决的错误。下面的代码是选择性重复过程的客户端,它说它找不到符号。

import java.util.*;
import java.net.*;
import java.io.*;

public class SelectRepeatClient {
    public static void main(String[] args) throws Exception {
        try {
            Socket s = new Socket("localhost", 6060);
            DataInputStream din = new DataInputStream(s.getInputStream());
            DataOutputStream dout = new DataOutputStream(s.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter the no of input : ");
            int n = Integer.parseInt(br.readLine());
            ArrayList<String> name = new ArrayList<String>();
            ArrayList<Double> phone = new ArrayList<Double>();
            ArrayList<String> email = new ArrayList<String>();
            for (int i = 0; i < n; i++) {
                System.out.println("Enter name : ");
                String nn = br.readLine();
                System.out.println("Enter phone : ");
                double ph = Double.parseDouble(br.readLine());
                System.out.println("Enter email : ");
                String e = br.readLine();
                name.add(nn);
                phone.add(ph);
                email.add(e);
            }
            dout.writeInt(n);
            for (int i = 0; i < n; i++) {
                String nname = name.get(i);
                String eemail = email.get(i);
                double pphone = phone.get(i);
                dout.writeUTf(nname);
                dout.writeDouble(pphone);
                dout.writeUTf(eemail);
                dout.flush();
            }
            System.out.println("Data sent...");
            int size = din.readInt();
            if (size != 0) {
                ArrayList<pair> err = new ArrayList<pair>();
                for (int i = 0; i < size; i++) {
                    int val1 = din.readInt();
                    int val2 = din.readInt();
                    err.add(new pair(val1, val2));
                }
                System.out.println("resending data...");
                for (int i = 0; i < size; i++) {
                    switch (err.get(i).getval2()) {
                        case 1:
                            String nname=name.get(err.get(i).getval1());
                            dout.writeUTf(nname);
                            dout.flush();
                            break;
                        case 2:
                            double pphone = phone.get(err.get(i).getval1());
                            dout.writeDouble(pphone);
                            dout.flush();
                            break;
                        case 3:
                            String eemail = email.get(err.get(i).getval1());
                            dout.writeUTf(eemail);
                            dout.flush();
                    }
                }
                System.out.println("data sent... ");
            }
            dout.close();
            din.close();
            s.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

class pair {
    int val1, val2;

    pair(int v1, int v2) {
        this.val1 = v1;
        this.val2 = v2;
    }

    void setval1(int ans) {
        this.val1 = ans;
    }

    void setval2(int ans) {
        this.val2 = ans;
    }

    int getval1() {
        return val1;
    }

    int getval2() {
        return val2;
    }
}

这是我得到的错误:

SelectRepeatClient.java:33: error: cannot find symbol
                dout.writeUTf(nname);
                    ^
  symbol:   method writeUTf(String)
  location: variable dout of type DataOutputStream
SelectRepeatClient.java:35: error: cannot find symbol
                dout.writeUTf(eemail);
                    ^
  symbol:   method writeUTf(String)
  location: variable dout of type DataOutputStream
SelectRepeatClient.java:52: error: cannot find symbol
                            dout.writeUTf(nname);
                                ^
  symbol:   method writeUTf(String)
  location: variable dout of type DataOutputStream
SelectRepeatClient.java:62: error: cannot find symbol
                            dout.writeUTf(eemail);
                                ^
  symbol:   method writeUTf(String)
  location: variable dout of type DataOutputStream
4 errors

【问题讨论】:

    标签: java tcp network-programming serversocket


    【解决方案1】:

    Java 是一种区分大小写的语言。 DataOutputStream类中没有writeUTf()(小写f)方法,正确的名称是writeUTF()(大写F)。

    【讨论】:

    • 哦,好吧,但是我在 vscode 中使用了 tabnine,它说 writeUTf() 即使我试图将它更改为 writeUTF() 它也会自动更正,非常感谢它现在编译
    • 那么tabnine错了。
    猜你喜欢
    • 2012-08-05
    • 2011-06-24
    • 2012-12-27
    • 2014-03-10
    • 2012-10-31
    • 1970-01-01
    • 2013-03-08
    • 2016-01-31
    • 2012-08-27
    相关资源
    最近更新 更多