[英]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.txt和C:\\我的電腦\\ 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.