我有一行类似于以下内容的代码:
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
答案 0 :(得分:1)
错误必须在代码中的其他位置。
我刚刚运行了以下代码:
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 。当我选择Hot Dog时,我得到了 Hot Dog 。
关于代码的其他部分。我跑了:
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:\我电脑上的某个文件夹\ Hot Dog.txt 和 C:\我电脑上的某个文件夹\ Pizza.txt 。
答案 1 :(得分:0)
您的代码甚至无法编译,因为它需要Object []。尝试新的String [] {“Pizza”,“Hot Dog”}而不只是{“Pizza”,“Hot Dog”}
答案 2 :(得分:0)
.txtsers\userName\AppData\Roaming\Pizza
的输出看起来像是在你的字符串中有一个回车符(在.txt
之前)。您可以使用以下代码重现这一点:
System.out.println("C:\\users\\userName\\AppData\\Roaming\\Pizza\r.txt");
问题是这个回车如何进入你的字符串。显然,你在问题中显示的代码并没有产生它。
创建一个short self contained compilable example (SSCCE),您可以在途中找到原因,也可以在此处发布时向我们展示(将其添加到问题中)。