输入多行字符串统计输出字符串行数,但是我的一直在死循环怎么样才能在任意行数之后输入q退出程序呢?

package Jishuhang_wangdong;

import java.util.Scanner;

public class Jishuhang_wangdong {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("请输入字符串");
        Scanner sc = new Scanner(System.in);
        String str = null;
        int a=0;
        while((str=sc.nextLine())!=null){
            a=a+1;


        System.out.println("行数:"+a);

        }
        while (true){
            System.out.println("请输入退出命令");
            String str1 = sc.nextLine();//读入一行字符串
            if(str1.equals("q")) {
                System.out.println("程序退出");
                break;//退出循环

        }
    }

    }
        }


package Jishuhang_wangdong;

import java.util.Scanner;

public class Jishuhang_wangdong {

    public static void main(String[] args) {

        System.out.println("请输入字符串");
        Scanner sc = new Scanner(System.in);
        String str = null;
        int a=0;
        while((str=sc.nextLine())!=null){
        if(str1.equals("q")) {
                System.out.println("程序退出");
                break;//退出循环
         }
            a=a+1;
            System.out.println("行数:"+a);

        }
    }
}

package Jishuhang_wangdong;

import java.util.Scanner;

public class Jishuhang_wangdong {

    public static void main(String[] args) {
                while(true){
        System.out.println("请输入字符串");
        Scanner sc = new Scanner(System.in);
        String str = null;
        int a=0;

                 if((str=sc.nextLine())!=null){
                            if (str1.equals("q")) {
                                        System.out.println("程序退出");
                                        break;//退出循环
                                }
                                else{a=a+1;}           
                        }
        }
        System.out.println("行数:"+a);
        }
}