JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 linux下使用scanner.nextLine()不會等待輸入的問題
weberhwang





發文: 45
積分: 0
於 2019-09-03 18:11 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
大家好

我的環境如下
jdk 1.8
Linux Red Hat Enterprise Linux Server release 7.3 (Maipo)
Windows 10

下面這段程式碼,在Windows10的cmd下執行,都會有等待輸入的效果,
但移到Linux上執行就變成無窮迴圈,一直印 please input a string:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Test {
 
  public static void main(String[] args) {
 
  Scanner scanner = new Scanner(System.in); 
  String input = null;
  while(true) {
    System.out.println("please input a string:");
    if (scanner.hasNextLine()) {
      input = scanner.nextLine();
      System.out.println(input);
      }
    }  
  }
}


weberhwang edited on 2019-09-04 09:18
reply to postreply to post
作者 Re:linux下使用scanner.nextLine()不會等待輸入的問題 [Re:weberhwang]
qrtt1





發文: 1756
積分: 32
於 2019-09-03 19:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
為什麼不是用 hasNextLine ?

reply to postreply to post
蝸牛角上爭何事?石火光中寄此身,隨富隨貧且歡樂,不開口笑是癡人。
my notes
作者 Re:linux下使用scanner.nextLine()不會等待輸入的問題 [Re:qrtt1]
weberhwang





發文: 45
積分: 0
於 2019-09-04 09:24 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
qrtt1您好

我試過將hasNext()改成hasNextLine()狀況相同,在linux上run,都是直接出現像下面的狀況
please input string:
please input string:
please input string:
please input string:
please input string:
please input string:
...一直狂印,不會停下來等待我輸入值。

但在Windows cmd 及 eclipse下 都會正常停下來等我輸入,像下面這樣
please input a string:
123 << 我輸入123
123 << 印出123
please input a string:
1231 <<我輸入1231
1231 <<印出1231
please input a string:

之前有爬文,有人提到linux的換行字元與windows不同,在想會不會是這個造成下面這行無法正常停下來?
input = scanner.nextLine();

但仍不知如何解這個問題?或者有 適合 linux 類似Scanner的jar可以用?


reply to postreply to post
作者 Re:linux下使用scanner.nextLine()不會等待輸入的問題 [Re:weberhwang]
weberhwang





發文: 45
積分: 0
於 2019-09-04 11:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我自己找到問題了
原因出在 Linux 的 .sh 檔的問題,而不是Java本身的問題

#!/bin/bash
/usr/local/java/jdk1.8.0_131/bin/java -cp $CLASSPATH -Djava.security.egd=file:///dev/urandom Test &

我最後面加了一個 & ← 這個在Linux是代表「背景執行」的概念

但目前是要互動介面,故不可以使用背景執行,這樣它就會等待前端keyboard輸入了。


reply to postreply to post
» JWorld@TW »  Java SE 討論區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8