Napis wynikowy najdłuższy, najkrótszy, pierwszy, ostatni w porządku leksykograficznym.

0

Witam. Mam do napisania program, w którym użytkownik w kolejnych dialogach wpisuje jakieś słowa. Następnie one są łączone w napis wynikowy. Podanie kropki w dialogu kończy dany napis wynikowy i rozpoczyna kolejny.
Program ma zakończyć wybranie 'Cancel'.
Na konsoli wyświetlić mają się wszystkie napisy, napisy wynikowe a następnie z napisów wynikowych: najdłuższy, najkrótszy, pierwszy i ostatni w porządku leksykograficznym.

Nie można w tym zadaniu korzystać z tablic.

Proszę o pomoc, niestety nie wiem gdzie popełniam błąd.

import javax.swing.JOptionPane;

 public class Zadanie3b {
	 	
	public static void main(String[] args) {
		
		String najdluzszy=null;
		String najkrotszy=null;
		String pierwszy=null;
	    String ostatni=null;
	    String wszystkienapisy="";
		String napis1="";
		String napis2="";
	
	do{
		
		napis1 = JOptionPane.showInputDialog(null, "Podaj dowolny napis lub kropke:");
	  
	  	if(napis1 == null || napis1.equals(".")){
				if(najdluzszy == null || najdluzszy.length() < napis2.length()){
					najdluzszy = napis2;
				}
				if(najkrotszy == null || najkrotszy.length() > napis2.length()){
					najkrotszy = napis2;
				}
							
				if(pierwszy == null || pierwszy.compareTo(napis2) > 0){
					pierwszy = napis2;
				}
				if(ostatni == null || ostatni.compareTo(napis2) < 0){
					ostatni = napis2;
				}
			}
			
	if(napis1 != null){
		if(napis1.equals(".")){
			napis2 = "";
			wszystkienapisy+="\n";
		}else{
			if(napis2.length() >= 1){
			napis2 += " ";
			wszystkienapisy += " ";}
			napis2 +=napis1;
			wszystkienapisy += napis1;
			 }	 
	}
	
  }
	while(napis1 != null);

	System.out.println("Napisy wynikowe to:\n" + wszystkienapisy);
	System.out.println("\nNajdluzszy napis: " + najdluzszy + "\nNajkrotszy napis: "+najkrotszy);
	System.out.println("\nPierwszy w porzadku leksykograficznym: " + pierwszy + "\nOstatni w porzadku leksykograficznym: "+ostatni+"\n");			  
	}

}
 
0
import javax.swing.JOptionPane;

public class Zadanie3b {

    public static void main(String[] args) {

        String najdluzszy = null;
        String najkrotszy = null;
        String pierwszy = null;
        String ostatni = null;
        String wszystkienapisy = "";
        String napis1 = "";
        String napis2 = "";

        do {

            napis1 = JOptionPane.showInputDialog(null, "Podaj dowolny napis lub kropke:");

            if (napis1 == null || napis1.equals(".")) {

                if (napis2 != null && napis2.length() > 0 && !napis2.equals(".")) {
                    if (najdluzszy == null || najdluzszy.length() < napis2.length()) {
                        najdluzszy = napis2;
                    }
                    if (najkrotszy == null || najkrotszy.length() > napis2.length()) {
                        najkrotszy = napis2;
                    }

                    if (pierwszy == null || pierwszy.compareTo(napis2) > 0) {
                        pierwszy = napis2;
                    }
                    if (ostatni == null || ostatni.compareTo(napis2) < 0) {
                        ostatni = napis2;
                    }
                }
                if (napis1 != null && napis1.equals(".")) {
                    wszystkienapisy += "\n" + napis2;
                    napis2 = "";
                }
            } else {
                napis2 += " " + napis1;
            }
        } while (napis1 != null);

        System.out.println("Napisy wynikowe to:" + wszystkienapisy);
        System.out.println("\nNajdluzszy napis: " + najdluzszy + "\nNajkrotszy napis: " + najkrotszy);
        System.out.println("\nPierwszy w porzadku leksykograficznym: " + pierwszy + "\nOstatni w porzadku leksykograficznym: " + ostatni + "\n");
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1