簡體   English   中英

如何從控制台將字符串列表添加到arraylist中,並且程序應在按ctrl + z時顯示字符串的反寫

[英]how to add list of strings into an arraylist from console and the program should print the reverse of string on pressing ctrl+z

我正在嘗試從控制台添加字符串列表,並在按ctrl + z時,控制台應該停止輸入並以相反的順序打印字符串

我有代碼將它們打印回來我想知道循環的編寫方式

public class Names {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>(); 
         Scanner sc = new Scanner(System.in);
         String one = sc.next();
         String two = sc.next();
         String three = sc.next();
         String four = sc.next();
         list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);
        //System.out.println("size of list is :" +list.size());
            for (int i = list.size()-1; i >=0; i--) {
            System.out.println(list.get(i));

        }



    }
}

好吧,您有些倒退了。

首先,CTRL + Z將使正在運行的進程置於后台並停止運行(在Linux上)。 你可能不想要那個。 我建議您停止在某些終端值上輸入,例如空字符串。

其次,您想無限期地將輸入輸入到列表中,而不僅僅是四個元素。 您聲明的四個String變量充其量是毫無意義的,它們會使您偏離自己的真實意圖。 您在這里的“陷阱”時刻是避免永遠輸入信息; 當他們輸入空字符串時停止它們。 這是一個片段/示例:

while(sc.hasNextLine()){
    final String s = sc.nextLine();
    if(!"".equals(s)) {
        list.add(s);
    } else {
        break;
    }
}

其他一切看起來都很好(您的循環可以反向執行)。

我只是通過將字符串添加到第一個位置來向后添加它們,然后打印代碼大大簡化了:

public static void main(String[] args) {
    List<String> list = new ArrayList<String>(); 
    Scanner sc = new Scanner(System.in);
    for(String s = sc.next(); !s.isEmpty(); s = sc.next())
        list.add(0, s);
    for (String s : list)
        System.out.println(s);
}
ArrayList<String> list = new ArrayList<String>(); 
Scanner sc = new Scanner(System.in);

while(sc.hasNext()){
    list.add(sc.next());    
}

//System.out.println("size of list is :" +list.size());
for (int i = list.size()-1; i >=0; i--) {
    System.out.println(list.get(i));            
}

我只是修復了您的代碼以避免Exception。 如果輸入了兩行,掃描程序將在ArrayList中添加兩行,然后for循環將遍歷列表並從后向打印。

假設您輸入了8行,for循環將循環7、6,... 0。 根據您的代碼,for循環將開始max-1(8-1 = 7),然后它將與條件(7> 0)匹配; 如果條件匹配,它將打印ArrayList的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM