簡體   English   中英

為什么JOptionPane會干擾我的字符串?

[英]Why does JOptionPane disturb my string?

我有一行類似於以下的代碼:

final String food = 
    (String) JOptionPane.showInputDialog(this, "Choose a food", "Food",
                                         JOptionPane.QUESTION_MESSAGE, null,
                                         {"Pizza", "Hot Dog"}, "Pizza");

當我使用變量food ,我得到了字符串的一部分,但還有一些看不見的其他字符。 我不確定發生了什么。 有人能幫我嗎?

重現該問題:

System.out.println(System.getenv("APPDATA") + File.separator + food + ".txt");

應該打印這樣的東西:

C:\Users\userName\AppData\Roaming\Pizza.txt

但是它實際上給出了輸出:

.txtsers\userName\AppData\Roaming\Pizza

該錯誤必須在代碼中的其他位置。

我只是運行以下代碼:

String[] options = {"Pizza", "Hot Dog"};

final String food = (String) JOptionPane.showInputDialog(null, "Choose a food", "Food", JOptionPane.QUESTION_MESSAGE, null, options, "Pizza");

System.out.println("'" + food + "'");

當我選擇Pizza時,控制台上會顯示Pizza 當我選擇“熱狗”時,我得到了“ 熱狗”

關於代碼的另一部分。 我跑了:

String[] options = {"Pizza", "Hot Dog"};

final String food = (String) JOptionPane.showInputDialog(null, "Choose a food", "Food", JOptionPane.QUESTION_MESSAGE, null, options, "Pizza");

StringBuilder sb = new StringBuilder();
sb.append(System.getenv("APPDATA"));
sb.append(File.separator);
sb.append(food);
sb.append(".txt");
System.out.println(sb.toString());

並得到了C:\\文件夾中的一些在我的電腦\\熱Dog.txtC:\\我的電腦\\ Pizza.txt一些文件夾

您的代碼甚至沒有編譯,因為它需要一個Object []。 嘗試使用新的String [] {“ Pizza”,“ Hot Dog”},而不只是{“ Pizza”,“ Hot Dog”}

一些Glassball的猜測:

.txtsers\\userName\\AppData\\Roaming\\Pizza看起來像在字符串中(在.txt之前)回車符。 您可以使用以下代碼重現此代碼:

System.out.println("C:\\users\\userName\\AppData\\Roaming\\Pizza\r.txt");

問題是此回車符如何進入您的字符串。 顯然,您在問題中顯示的代碼不會產生該代碼。

創建一個簡短的自包含可編譯示例(SSCCE) ,當您在此處發布(添加到問題中)時,您可能會在途中找到原因,或者我們可以向您顯示。

暫無
暫無

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

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