Como imprimir String[Resolvido]

Duvida na linha 58, estou programando no netbeans

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package segundalista;


/**
 *
 * @author workstation
 */
public class Terceiro {
    
        public static void main (String []args){  
      
        double alt, malt, menoralt;  //declaracao das variaveis
        int i, fem;
	char sexo;
	String nome;
	
        i=0;
	fem = 0;
	malt = 0;
	menoralt = 0;
        
            
				 
	while (i<3){     		
        
            
                i++;
       
       nome = InOut.leString("Entre com seu nome");
       sexo = InOut.leChar ("Entre com seu sexo, f para feminino e m para masculino");        
       alt = InOut.leDouble("Entre com sua altura, para separar a casa decimal use (.) ponto");
      
       
                  
		
                        if (malt < alt){
                            
                            malt = alt;
                            
                        }else {
                            
                            menoralt = alt;
                            malt = malt;
                            
                        }
                
                                       
                            if (sexo == 'f'){
			
                                fem= +1;
				
                            }
			}
                    System.out.println("Possui a menor altura medindo" +menoralt"de"+nome);//não estou conseguindo imprimir o nome 
                    System.out.println("A maior altura e de;" +malt );
                    System.out.println("Pessoas do sexo feminino;" +fem );
                       
                       
                }
                 
}
                     

O que está acontecendo? Está dando algum erro?

A impressão é feita dessa forma mesmo. Talvez o problema não seja a saída e sim a entrada.

Na linha 58 “System.out.println(“Possui a menor altura medindo” +menoralt"de”+nome);" está faltando um sinal de adição para realizar a concatenação da String.

System.out.println(“Possui a menor altura medindo” + menoralt + " de " + nome);

[quote=Andre Rosa]O que está acontecendo? Está dando algum erro?

A impressão é feita dessa forma mesmo. Talvez o problema não seja a saída e sim a entrada.[/quote]

o erro que da e o seguinte:

Exception in thread “main” java.lang.RuntimeException: Uncompilable source code - variable nome might not have been initialized
at segundalista.Terceiro.main(Terceiro.java:58)
Java Result: 1

e não imprime as informações que quero, sendo que se eu tirar esse +nome e deixar somente menoralt ele imprime tudo direitinho, sexo, e maior altura.

[quote=jpbadeveloper]Na linha 58 “System.out.println(“Possui a menor altura medindo” +menoralt"de”+nome);" está faltando um sinal de adição para realizar a concatenação da String.

System.out.println(“Possui a menor altura medindo” + menoralt + " de " + nome);[/quote]

deu na mesma

[quote=Ckralls][quote=Andre Rosa]O que está acontecendo? Está dando algum erro?

A impressão é feita dessa forma mesmo. Talvez o problema não seja a saída e sim a entrada.[/quote]

o erro que da e o seguinte:

Exception in thread “main” java.lang.RuntimeException: Uncompilable source code - variable nome might not have been initialized
at segundalista.Terceiro.main(Terceiro.java:58)
Java Result: 1

e não imprime as informações que quero, sendo que se eu tirar esse +nome e deixar somente menoralt ele imprime tudo direitinho, sexo, e maior altura.[/quote]

Veja o post do jpbadeveloper.

[quote=jpbadeveloper]Na linha 58 “System.out.println(“Possui a menor altura medindo” +menoralt"de”+nome);" está faltando um sinal de adição para realizar a concatenação da String.

System.out.println(“Possui a menor altura medindo” + menoralt + " de " + nome);[/quote]

Ja tentas t o que ele disse?

E vocês chegaram a ler a mensagem de erro que o Java deu para ele?

A mensagem de erro diz que a variável nome pode não ter sido inicializada. Isso porque ele não tem como saber se seu código vai ou não entrar no while. Como você não atribui nenhum valor a nome antes do while, se o código não entrasse no while, seria um erro tentar imprimir.

Para eliminar o erro, basta declarar nome como:

String nome = &quot;&quot;;

E o código estará corrigido.

Aproveite e corrija também a indentação do seu código. Está toda errada.
Dê nomes melhores para suas variáveis "malt" é bem confuso quando se tem a menor e a maior altura.

Veja:

public class Terceiro {

	public static void main(String[] args) {

		double maiorAltura = 0;
		double menorAltura = Double.MAX_VALUE;
		String nomeMenor = &quot;&quot;;
		int contFem = 0;
		
		String nome = &quot;&quot;;
		for (int i = 0 ; i &lt; 3; i++)
		{
			nome = InOut.leString(&quot;Entre com seu nome&quot;);
			char sexo = InOut.leChar(&quot;Entre com seu sexo, f para feminino e m para masculino&quot;);
			double alt = InOut.leDouble(&quot;Entre com sua altura, para separar a casa decimal use (.) ponto&quot;);

			if (menorAltura &gt; alt) {
				menorAltura = alt;
				nomeMenor = nome;				
			}

			if (maiorAltura &lt; alt) {
				maiorAltura = alt;
			}

			if (sexo == 'f' || sexo == 'F') {
				contFem++;
			}
		}
	
		System.out.println(&quot;Possui a menor altura medindo&quot; + menorAltura + &quot;de&quot; + nomeMenor);
		System.out.println(&quot;A maior altura e de;&quot; + maiorAltura);
		System.out.println(&quot;Pessoas do sexo feminino;&quot; + contFem);
	}
}

Ckralls neste link http://www.oracle.com/technetwork/java/codeconv-138413.html tem um manual para algumas convenções de nome, espaçamento, comentários, e outras regras que devem ser seguidas para se ter uma boa leitura do seu código java. Por favor por curiosidade minha na linhas 33, 34 e 35 você utiliza um nome InOut.leString o InOut é uma classe do seu pacote, se for você poderia postar ela também.

Segue a Classe InOut :



package segundalista;

import javax.swing.JOptionPane;

/**
 * A classe &lt;tt&gt;leDadosWin&lt;/tt&gt; permite a leitura de dados de tipos nativos e de
 * inst?ncias da classe &lt;tt&gt;String&lt;/tt&gt; a partir do teclado, atrav?s de uma
 * janela. Basicamente esta classe encapsula o funcionamento dos m?todos da clase
 * &lt;tt&gt;JOptionPane&lt;/tt&gt;, que pode ser usado como entrada padr?o de dados.
 * <ul>
 * <li>Os m?todos s?o est?ticos para facilitar o uso da classe
 * <li>Cria??o de m?todos sobrecarregados para que valores <i>default</i> possam ser 
 *     usados
 * <li>Tratamento das exce??es
 *   
 * @author Cinthia Cristina Lucio Caliari
 * @version 1.1
 */

public class InOut {
	/**
	 * Este m?todo ? para entrada de uma String. Tem como par?metro de entrada
	 * uma String que indicar? para o usu?rio qual o dado que ser? lido naquele
	 * momento por aquela caixa de texto e retorna a String lida
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return String que foi lida
	 */
	public static String leString (String frase){
		String Entrada;
		
		Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
											   JOptionPane.QUESTION_MESSAGE);
		return Entrada;
	}
	
	/**
	 * Este m?todo ? para entrada de um objeto do tipo byte. Tem como par?metro 
	 * de entrada uma String que indicar? para o usu?rio qual o dado que ser? 
	 * lido naquele momento por aquela caixa de texto. 
	 * L? ent?o uma String e a converte para um objeto do tipo byte. 
	 * Se na convers?o ocorrer algum erro, o processo ser? feito novamente, 
	 * ou seja, ser? lida outra String e convertida para byte. O processo s? 
	 * p?ra quando a convers?o for bem sucedida.  
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return um objeto do tipo byte
	 */
	public static byte leByte (String frase){
		byte num = 0;
		String Entrada;
		boolean ERRO;
		
		do{
			try{
				Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
						   								JOptionPane.QUESTION_MESSAGE);
				num = Byte.parseByte(Entrada);
				ERRO = false;
			}
			catch(NumberFormatException e){
				JOptionPane.showMessageDialog(null, &quot;VALOR DEVE SER UM N?MERO DO TIPO &quot; +
											  &quot;BYTE&quot;, &quot;   &gt;&gt;&gt;      ERRO     &lt;&lt;&lt;&quot;, 
											  JOptionPane.ERROR_MESSAGE);
				ERRO = true;
			}
		}while (ERRO);	
		return num;
	}
	
	/**
	 * Este método é para entrada de um objeto do tipo short. Tem como parametro
	 * de entrada uma String que indicar para o usuário qual o dado que ser
	 * lido naquele momento por aquela caixa de texto. 
	 * Le entao uma String e a converte para um objeto do tipo short.
	 * O processo so para quando a conversao for bem sucedida.
	 * 
	 * @param frase que ser usada para o usuário saber qual dado sera lido
	 * @return um objeto do tipo short
	 */
	public static short leShort (String frase){
		short num=0;
		String Entrada;
		boolean ERRO;
		
		do{
			try{
				Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
						   								JOptionPane.QUESTION_MESSAGE);
				num = Short.parseShort(Entrada);
				ERRO = false;
			}
			catch(NumberFormatException e){
				JOptionPane.showMessageDialog(null, &quot;VALOR DEVE SER UM N?MERO DO TIPO &quot; +
											  &quot;SHORT&quot;, &quot;   &gt;&gt;&gt;      ERRO     &lt;&lt;&lt;&quot;, 
											  JOptionPane.ERROR_MESSAGE);
				ERRO = true;
			}
		}while (ERRO);	
		return num;
	}
	
	/**
	 * Este m?todo ? para entrada de um objeto do tipo int. Tem como par?metro 
	 * de entrada uma String que indicar? para o usu?rio qual o dado que ser? 
	 * lido naquele momento por aquela caixa de texto. 
	 * L? ent?o uma String e a converte para um objeto do tipo int. 
	 * O processo s? p?ra quando a convers?o for bem sucedida.  
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return um objeto do tipo int
	 */
	public static int leInt (String frase){
		int num = 0;
		String Entrada;
		boolean ERRO;
		
		do{
			try{
				Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
						   								JOptionPane.QUESTION_MESSAGE);
				num = Integer.parseInt(Entrada);
				ERRO = false;
			}
			catch(Exception e){
				JOptionPane.showMessageDialog(null, &quot;VALOR DEVE SER UM N?MERO DO TIPO &quot; +
											  &quot;INTEIRO &quot;, &quot;   &gt;&gt;&gt;      ERRO     &lt;&lt;&lt;&quot;, 
											  JOptionPane.ERROR_MESSAGE);
				ERRO = true;
			}
		}while (ERRO);		
		return num;
	}
	
	/**
	 * Este m?todo ? para entrada de um objeto do tipo long. Tem como par?metro 
	 * de entrada uma String que indicar? para o usu?rio qual o dado que ser? 
	 * lido naquele momento por aquela caixa de texto. 
	 * L? ent?o uma String e a converte para um objeto do tipo long. 
	 * O processo s? p?ra quando a convers?o for bem sucedida.  
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return um objeto do tipo long
	 */
	public static long leLong (String frase){
		long num = 0;
		String Entrada;
		boolean ERRO;
		
		do{
			try{
				Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
						   								JOptionPane.QUESTION_MESSAGE);
				num = Long.parseLong(Entrada);
				ERRO = false;
			}
			catch(Exception e){
				JOptionPane.showMessageDialog(null, &quot;VALOR DEVE SER UM N?MERO DO TIPO &quot; +
											  &quot;LONG &quot;, &quot;   &gt;&gt;&gt;      ERRO     &lt;&lt;&lt;&quot;, 
											  JOptionPane.ERROR_MESSAGE);
				ERRO = true;
			}
		}while (ERRO);		
		return num;
	}

	/**
	 * Este m?todo ? para entrada de um objeto do tipo float. Tem como par?metro 
	 * de entrada uma String que indicar? para o usu?rio qual o dado que ser? 
	 * lido naquele momento por aquela caixa de texto. 
	 * L? ent?o uma String e a converte para um objeto do tipo float. 
	 * O processo s? p?ra quando a convers?o for bem sucedida.  
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return um objeto do tipo float
	 */
	public static float leFloat (String frase){
		float num = 0;
		String Entrada;
		boolean ERRO;
		
		do{
			try{
				Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
						   JOptionPane.QUESTION_MESSAGE);
				num = Float.parseFloat(Entrada);
				ERRO = false;
			}
			catch(Exception e){
				JOptionPane.showMessageDialog(null, &quot;VALOR DEVE SER UM N?MERO DO TIPO &quot; +
 											  &quot;FLOAT&quot;, &quot;   &gt;&gt;&gt;      ERRO     &lt;&lt;&lt;&quot;, 
											  JOptionPane.ERROR_MESSAGE);
				ERRO = true;
			}
		}while (ERRO);	
		return num;
	}

	/**
	 * Este m?todo ? para entrada de um objeto do tipo double. Tem como par?metro 
	 * de entrada uma String que indicar? para o usu?rio qual o dado que ser? 
	 * lido naquele momento por aquela caixa de texto. 
	 * L? ent?o uma String e a converte para um objeto do tipo double. 
	 * O processo s? p?ra quando a convers?o for bem sucedida.  
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return um objeto do tipo double
	 */
	public static double leDouble (String frase){
		double num = 0;
		String Entrada;
		boolean ERRO;
		
		do{
			try{
				Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
						   								JOptionPane.QUESTION_MESSAGE);
				num = Double.parseDouble(Entrada);
				ERRO = false;
			}
			catch(Exception e){
				JOptionPane.showMessageDialog(null, &quot;VALOR DEVE SER UM N?MERO DO TIPO &quot; +
											  &quot;DOUBLE&quot;, &quot;   &gt;&gt;&gt;      ERRO     &lt;&lt;&lt;&quot;, 
											  JOptionPane.ERROR_MESSAGE);
				ERRO = true;
			}
		}while (ERRO);	
		return num;
	}

	/**
	 * Este m?todo ? para entrada de um objeto do tipo char. Tem como par?metro 
	 * de entrada uma String que indicar? para o usu?rio qual o dado que ser? 
	 * lido naquele momento por aquela caixa de texto. 
	 * L? ent?o uma String e retorna apenas o primeiro caracter da String.  
	 * 
	 * @param frase que ser? usada para o usu?rio saber qual dado ser? lido
	 * @return um objeto do tipo char
	 */
	public static char leChar (String frase){
		String Entrada;
		boolean ERRO;
		
		do{
			Entrada = JOptionPane.showInputDialog (null, frase, &quot;Entrada de dados&quot;, 
					   								JOptionPane.QUESTION_MESSAGE);
			if (Entrada.length()!= 0)
				ERRO = false;
			else
				ERRO = true;
		}while (ERRO);
		return Entrada.charAt(0);
	}
	
	/**
	 * Este m?todo foi criado para mandar uma mensagem com o ?cone de
	 * ERRO
	 *  
	 * @param cabecalho que aparecer? no topo da mensagem
	 * @param frase     que aparecer? dentro da caixa de mensagem
	 */
	public static void MsgDeErro(String cabecalho, String frase){
		JOptionPane.showMessageDialog(null, frase, cabecalho,
				  					  JOptionPane.ERROR_MESSAGE);
	}
	
	/**
	 * Este m?todo foi criado para mandar uma mensagem com o ?cone de
	 * INFORMA??O
	 *  
	 * @param cabecalho que aparecer? no topo da mensagem
	 * @param frase     que aparecer? dentro da caixa de mensagem
	 */
	public static void MsgDeInforma(String cabecalho, String frase){
		JOptionPane.showMessageDialog(null, frase, cabecalho,
				  					  JOptionPane.INFORMATION_MESSAGE);
	}

	/**
	 * Este método foi criado para mandar uma mensagem sem ?cone
	 *  
	 * @param cabecalho que aparecer no topo da mensagem
	 * @param frase     que aparecer dentro da caixa de mensagem
	 */
	public static void MsgSemIcone(String cabecalho, String frase){
		JOptionPane.showMessageDialog(null, frase, cabecalho,
				  					  JOptionPane.PLAIN_MESSAGE);
	}
	
	/**
	 * Este método foi criado para mandar uma mensagem com o ícone de
	 * AVISO
	 *  
	 * @param cabecalho que aparecer no topo da mensagem
	 * @param frase     que aparecer dentro da caixa de mensagem
	 */
	public static void MsgDeAviso (String cabecalho, String frase){
		JOptionPane.showMessageDialog(null, frase, cabecalho,
				  					  JOptionPane.WARNING_MESSAGE);
	}


}

[code]

    double menorAltura = Double.MAX_VALUE;  // o que seria??
     

   

    [/code]

Essa linha coloca na variável o maior valor possível para um double.
Assim vc garante que a comparação com qualquer número irá atribuir um valor menor a essa variável.