No suitable constructor found for

13 respostas
G

Quando compilo a classe abaixo aparece a msg:

SearchName.java:60: error: no suitable constructor found for SearchName(String,S
tring,String)
alist.add(new SearchName(Used, A
vailable,Use));
^
constructor SearchName.SearchName(String,String) is not applicable
(actual and formal argument lists differ in length)
constructor SearchName.SearchName() is not applicable
(actual and formal argument lists differ in length)
SearchName.java:61: error: incompatible types
for (SearchName s : alist) {
^
required: SearchName
found: Object
SearchName.java:62: error: cannot find symbol
if (n.equals(s.getUse())
) {
^
symbol: method getUse()
location: variable s of type SearchName
SearchName.java:64: error: cannot find symbol
System.out.print
(s.getUse() + " ");

^
symbol: method getUse()
location: variable s of type SearchName
Note: SearchName.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
4 errors

import java.io.*;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;

public class SearchName extends JFrame {
        static String name;
        static String age;

        public SearchName() {
        }

        public SearchName(String name, String age) {
                this.name = name;
                this.age = age;
        }

        public String getName() {
                return name;
        }

        public String getAge() {
                return age;
        }

        public static void main(String[] args) {
                SearchName search = new SearchName();
                JButton button = new JButton("Search");
                JPanel panel = new JPanel();
                panel.add(button);
                search.add(panel);
                search.setSize(300, 60);
                search.setVisible(true);
                ActionListener actionListener = new ActionListener() {
                        public void actionPerformed(ActionEvent actionEvent) {
                                String n = JOptionPane.showInputDialog(null, "Enter name");
                                try {
                                        FileInputStream fstream = new FileInputStream(
                                                       "C:\\Users\\mariachi.txt");
                                        DataInputStream in = new DataInputStream(fstream);
                                        BufferedReader br = new BufferedReader(
                                                        new InputStreamReader(in));
                                        String strLine;
                                        ArrayList list = new ArrayList();
                                        while ((strLine = br.readLine()) != null) {
                                                list.add(strLine);
                                        }
                                        Iterator itr;
                                        for (itr = list.iterator(); itr.hasNext();) {
                                                String str = itr.next().toString();
                                                String[] splitSt = str.split(" ");
                                                String Used = "", Available = "", Use = "";
                                                for (int i = 0; i < splitSt.length; i++) {
                                                        Used = splitSt[0];
                                                        Available = splitSt[1];
                                                        Use = splitSt[2];
                                                }
                                                ArrayList alist = new ArrayList();
                                                alist.add(new SearchName(Used, Available,Use));
                                                for (SearchName s : alist) {
                                                        if (n.equals(s.getUse())) {
                                                                System.out.println("Use ");
                                                                System.out.print(s.getUse() + " ");
                                                        }
                                                }
                                        }
                                } catch (Exception e) {
                                }
                        }
                };

                button.addActionListener(actionListener);
        }
}

O que há de errado com o código?

Obrigado.

13 Respostas

Rodrigo_Sasaki

Você não tem um construtor na classe SearchName que receba 3 Strings como argumento, porém está tentando instancia um objeto dessa forma.

G

Rodrigo Sasaki:
Você não tem um construtor na classe SearchName que receba 3 Strings como argumento, porém está tentando instancia um objeto dessa forma.

Sou novo em Java, pode me ajudar a fazer um construtor?

obrigado.

Rodrigo_Sasaki
Você já definiu 2 construtores na classe.
public SearchName() {  

}  
  
public SearchName(String name, String age) {  
    this.name = name;  
    this.age = age;  
}
G
Rodrigo Sasaki:
Você já definiu 2 construtores na classe.
public SearchName() {  

}  
  
public SearchName(String name, String age) {  
    this.name = name;  
    this.age = age;  
}

Fiz a correção no construtor, porem continua dando erro. Segue erro abaixo:

SearchName.java:7: error: class SearchAvailable is public, should be declared in
a file named SearchAvailable.java
public class SearchAvailable extends JFrame {
^
SearchName.java:66: error: no suitable constructor found for SearchAvailable(Str
ing,String,String)
alist.add(new SearchAvailable(Us
ed, Available,Use));
^
constructor SearchAvailable.SearchAvailable(String,String) is not applicable

(actual and formal argument lists differ in length)
constructor SearchAvailable.SearchAvailable() is not applicable
(actual and formal argument lists differ in length)
SearchName.java:67: error: incompatible types
for (SearchAvailable s : alist)
{
^
required: SearchAvailable
found: Object
Note: SearchName.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors

Fellipex

Posta ai a classe que utiliza esta classe SearchName , pois conforme mostrado no log, você está tentando passar 3 ARGUMENTOS para o construtor, porém na classe SearchName não existe construtor que aceite 3 parâmetros(String,String,String) , o unico que aceita parametros, é o segundo e ele aceita apenas 2(String, String).

Att.

G
Fellipex:
Posta ai a classe que utiliza esta classe SearchName , pois conforme mostrado no log, você está tentando passar 3 ARGUMENTOS para o construtor, porém na classe SearchName não existe construtor que aceite 3 parâmetros(String,String,String) , o unico que aceita parametros, é o segundo e ele aceita apenas 2(String, String).

Att.

Vou postar novamente o código...

import java.io.*;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;

public class SearchAvailable extends JFrame {
        static String Available;
        static String Used;
		static String Use;

        public SearchAvailable() {
        }

        public SearchAvailable(String Available, String Used) {
                this.Available = Available;
                this.Used = Used;
				this.Use = Use;
        }

        public String getAvailable() {
                return Available;
        }

        public String getUsed() {
                return Used;
        }
		
		public String getUse(){
				return Use;
		}

        public static void main(String[] args) {
                SearchAvailable search = new SearchAvailable();
                JButton button = new JButton("Search");
                JPanel panel = new JPanel();
                panel.add(button);
                search.add(panel);
                search.setSize(300, 60);
                search.setVisible(true);
                ActionListener actionListener = new ActionListener() {
                        public void actionPerformed(ActionEvent actionEvent) {
                                String n = JOptionPane.showInputDialog(null, "Enter Available");
                                try {
                                        FileInputStream fstream = new FileInputStream(
                                                       "C:\\Users\\mariachi.txt");
                                        DataInputStream in = new DataInputStream(fstream);
                                        BufferedReader br = new BufferedReader(
                                                        new InputStreamReader(in));
                                        String strLine;
                                        ArrayList list = new ArrayList();
                                        while ((strLine = br.readLine()) != null) {
                                                list.add(strLine);
                                        }
                                        Iterator itr;
                                        for (itr = list.iterator(); itr.hasNext();) {
                                                String str = itr.next().toString();
                                                String[] splitSt = str.split(" ");
                                                String Used = "", Available = "", Use = "";
                                                for (int i = 0; i < splitSt.length; i++) {
                                                        Used = splitSt[0];
                                                        Available = splitSt[1];
                                                        Use = splitSt[2];
                                                }
                                                ArrayList alist = new ArrayList();
                                                alist.add(new SearchAvailable(Used, Available,Use));
                                                for (SearchAvailable s : alist) {
                                                        if (n.equals(s.getUse())) {
                                                                System.out.println("Use ");
                                                                System.out.print(s.getUse() + " ");
                                                        }
                                                }
                                        }
                                } catch (Exception e) {
                                }
                        }
                };

                button.addActionListener(actionListener);
        }
}
Fellipex

Fácil de veer o erro,

alist.add(new SearchAvailable(Used, Available,Use));  
// Aonde que searchAvailable aceita 3 parametros, como Use, Avaliable, Use ????
// No construtor de SearchAvailable  existe String Available, String Used, ou seja 2 parametros

Você esqueceu de colocar mais um parametro no construtor para o String Use

public SearchAvailable(String available, String used, String use) {  
                this.available= available;  
                this.used= used;  
                this.use= use;  
        }

Obs: Nome de variavéis sempre iniciando minuscula.

Att

G
Fellipex:
Posta ai a classe que utiliza esta classe SearchName , pois conforme mostrado no log, você está tentando passar 3 ARGUMENTOS para o construtor, porém na classe SearchName não existe construtor que aceite 3 parâmetros(String,String,String) , o unico que aceita parametros, é o segundo e ele aceita apenas 2(String, String).

Att.

Estava dando uma olhada no código e consegui corrigir algumas coisas, porem agora apresentou novos erros. vou postar o código e o erro.

import java.io.*;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;

public class SearchName extends JFrame {
        static String Available;
        static String Used;
		static String Use;

        public SearchName() {
        }

        public SearchName(String Available, String Used, String Use) {
                this.Available = Available;
                this.Used = Used;
				this.Use = Use;
        }

        public String getAvailable() {
                return Available;
        }

        public String getUsed() {
                return Used;
        }
		
		public String getUse(){
				return Use;
		}

        public static void main(String[] args) {
                SearchName search = new SearchName();
                JButton button = new JButton("Search");
                JPanel panel = new JPanel();
                panel.add(button);
                search.add(panel);
                search.setSize(300, 60);
                search.setVisible(true);
                ActionListener actionListener = new ActionListener() {
                        public void actionPerformed(ActionEvent actionEvent) {
                                String n = JOptionPane.showInputDialog(null, "Enter Available");
                                try {
                                        FileInputStream fstream = new FileInputStream(
                                                       "C:\\Users\\mariachi.txt");
                                        DataInputStream in = new DataInputStream(fstream);
                                        BufferedReader br = new BufferedReader(
                                                        new InputStreamReader(in));
                                        String strLine;
                                        ArrayList list = new ArrayList();
                                        while ((strLine = br.readLine()) != null) {
                                                list.add(strLine);
                                        }
                                        Iterator itr;
                                        for (itr = list.iterator(); itr.hasNext();) {
                                                String str = itr.next().toString();
                                                String[] splitSt = str.split(" ");
                                                String Used = "", Available = "", Use = "";
                                                for (int i = 0; i < splitSt.length; i++) {
                                                        Used = splitSt[0];
                                                        Available = splitSt[1];
                                                        Use = splitSt[2];
                                                }
                                                ArrayList alist = new ArrayList();
                                                alist.add(new SearchName(Used, Available,Use));
                                                for (SearchName s : alist) {
                                                        if (n.equals(s.getUse())) {
                                                                System.out.println("Use ");
                                                                System.out.print(s.getUse() + " ");
                                                        }
                                                }
                                        }
                                } catch (Exception e) {
                                }
                        }
                };

                button.addActionListener(actionListener);
        }
}

SearchName.java:67: error: incompatible types
for (SearchName s : alist) {
^
required: SearchName
found: Object
Note: SearchName.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

Fellipex

altere isso

ArrayList alist = new ArrayList();

para isso

//Cast do ArrayList para o tipo SearchName.
List<SearchName> alist = new ArrayList<SearchName>();

Obs: Porque há cada post sua classe muda de SearchName para SearchAvailiable e vice-versa?

G

Fellipex:
altere isso

ArrayList alist = new ArrayList();

para isso

//Cast do ArrayList para o tipo SearchName.
List<SearchName> alist = new ArrayList<SearchName>();

Obs: Porque há cada post sua classe muda de SearchName para SearchAvailiable e vice-versa?

Eu fiz a alteração, conforme solicitado e deu erro novamente.

SearchName.java:65: error: reference to List is ambiguous, both interface java.u
til.List in java.util and class java.awt.List in java.awt match
List alist = new Arr
ayList();
^
Note: SearchName.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

Fellipex

Você tem que apagar o import referente ao awt
Como visto no seu código voce ta importando

import java.awt.*;  
import java.util.*;

Apague este ,

import java.awt.*;

pois, a List que você quer usar é do pacote Util e nao do AWT, o log está afirmando ambiguidade na declaração da List. Apague o que eu mencionei, que provavelmente resolverá o problema.

Att

G

Fellipex:
Você tem que apagar o import referente ao awt
Como visto no seu código voce ta importando

import java.awt.*;  
import java.util.*;

Apague este ,

import java.awt.*;

pois, a List que você quer usar é do pacote Util e nao do AWT, o log está afirmando ambiguidade na declaração da List. Apague o que eu mencionei, que provavelmente resolverá o problema.

Att

Recompilei sem o awt e na me pediu para complilar utilizando o -xlint. Utilizei o -xlint para recompilar e me informou mais erros. Segue abaixo.

SearchName.java:15: warning: [static] static variable should be qualified by typ

e name, SearchName, instead of by an expression

this.Available = Available;

^

SearchName.java:16: warning: [static] static variable should be qualified by typ

e name, SearchName, instead of by an expression

this.Used = Used;

^

SearchName.java:17: warning: [static] static variable should be qualified by typ

e name, SearchName, instead of by an expression

this.Use = Use;

^

SearchName.java:52: warning: [unchecked] unchecked call to add(E) as a member of

the raw type ArrayList

list.add(strLine);

^

where E is a type-variable:

E extends Object declared in class ArrayList

SearchName.java:6: warning: [serial] serializable class SearchName has no defini

tion of serialVersionUID

public class SearchName extends JFrame {

^

5 warnings
R

Olá, o erro está na if da servlet Enviadados é os long dela, eu troquei todos por string,tanto nela como na classe Clientes,
porém aparece outro erro nessa linha:

c = new Clientes(null, request.getParameter("nome")

aparece o erro " no suitable constructor found for Clientes…"

Criado 29 de outubro de 2012
Ultima resposta 13 de jun. de 2014
Respostas 13
Participantes 4