come puoi risolvere? Chi lo sa... vediamo intanto se così ottieni il risultato sperato
codice:
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n, maxlung = 0;
        
        
        System.out.println("Quante frasi vuoi mettere:");
        n = in.nextInt();
        
        String[] frase = new String[n];
        
        System.out.println("Inserisci le frasi");
        int counter = 0;
        
        in = new Scanner(System.in);
        while (counter < n) {                    
            frase[counter] = in.nextLine();
            maxlung = (frase[counter].length() > maxlung ? frase[counter].length() : maxlung);
            counter++;
        }
        
        
        char Matrix[][] = new char[maxlung][n];        
        
        for(int i = 0; i < Matrix.length; i++) {
            for(int j = 0; j < Matrix[i].length; j++) {
                Matrix[i][j] = (frase[j].length() > i ? frase[j].charAt(i) : ' ');
            }
        }
        
        for(int i = 0; i < Matrix.length ;i++){
            for(int j = 0; j < Matrix[i].length; j++) {
                System.out.printf("%c ", Matrix[i][j]);				
            }
            System.out.println();
        }        
    }
insomma, secondo me ci sono un po' di cosette poco chiare nel tuo codice (non so se siano poco chiare a me o a te ). Ad ogni modo, ammesso e non concesso che con il mio codice si ottenga il comportamento atteso, mi sento solo di dirti di provare a descrivere l'algoritmo (carta e penna) e provare a seguirlo passo passo... ti saresti reso/a subito conto di certi inghippi (siano essi dovuti sbadataggine o cattiva progettazione).