当前位置: 首页 > 知识库问答 >
问题:

从扫描仪和JOptionPane加载的字符串之间的区别

淳于鹏
2023-03-14

我想知道从Scanner.next()加载的String对象和JOprionPane.showInputDialog(文本)之间有什么区别;

当我使用扫描仪时,我的小程序出现问题:

 Scanner sc = new Scanner(System.in);
 String s = sc.next();
 s = s.replaceAll("\\s+", "");

我写了,假设"Dami an"结果是"Dami"

但是当我使用JOptionPane加载String时:

    String s = JOptionPane.showInputDialog("Text");
    s = s.replaceAll("\\s+", "");

结果是(正如我在前面的示例中所预期的那样)“Damian”。

为什么结果不同?

感谢帮助:)

致意:D

共有2个答案

刘乐童
2023-03-14

因为Scanner.next()方法获取下一个令牌,即Dami,所以an是紧跟在Dami之后的第二个令牌。

如果您希望以最高效(性能方面)的方式阅读整行内容,您可能希望使用:

try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))){
String s = br.readLine();
}catch(IOException e){e.printStackTrace();}
乐正远
2023-03-14

sc.next()只返回一个令牌,所以它只在第一次调用时获取Dami,而不是Dami an。如果再次调用sc.next(),则会得到an

如果您想一次获取整行内容,请使用sc.nextLine()

 类似资料:
  • 我正试图用Java中的扫描器将一个字符串分成另外两个字符串。好像不起作用。我只能通过谷歌找到扫描仪用来读取控制台输入的例子。我从扫描仪的手册中找出了我做事情的方式,我不确定我错了什么。 第一个和第二个是空白的,我不知道为什么。

  • 我的问题是格式化通过扫描仪输入的字符串。我试图输入“Result is”,但printf()似乎只看到字符串的“Result”部分,那么空格的命令是什么呢?thx公司

  • 我创建了一个简单的扫描器,用于计算中的字符串数。txt文件。每个字符串位于下一行。它算错了,每次它给我数字297,甚至有超过20000个字符串。这个txt文件是由我编写的另一个程序创建的,它从网站获取链接,并使用FileWriter和BufferedWriter将其保存到。txt文件。可能有什么问题? 编辑:字符串示例:

  • 任何人都可以帮我解决这个问题。我接受三个输入:整数、双精度和字符串,但Scanner类不接受字符串值

  • 问题内容: 空字符串()和空字符串()有什么区别? 这就是我所拥有的: 这是什么意思? 问题答案: 表示将空值分配给。在这种情况下,与相同,将按预期产生。 表示将()或“完全没有值”分配给。因此,这与相同,它将产生一个,因为您无法在Java中对变量(指针或类似物)调用方法。 还有一点,声明 实际上具有与以下功能相同的效果: 鉴于 如前所述,是另一回事。

  • 我必须使用扫描仪输入未知数量的数字。一旦用户输入-1,程序需要打印输入的所有数字的总和,然后结束程序。总和中需要包含-1。 我不能得到正确的总数。有人能帮忙吗?

  • 问题内容: 这些声明之间有何不同? 每种情况下的内存分配如何? 问题答案: 要更正编译错误,请使用以下语句之一替换 下一节将以上陈述相互比较 字符串常量 “ MY PROFESSION”是一个常量,并存储在String池中 是不可变的,即完整的内容无法修改。 字符串的大小/长度是固定的(无法附加) 字符数组 保存String的基础数组的副本(通过)并存储在堆空间中 通过加载单个字符常量在堆栈框架中

  • 本文向大家介绍字符数组和字符串之间的区别,包括了字符数组和字符串之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解字符数组和字符串之间的区别。 字符串 他们是不可变的。 一旦它们被定义,就不能被更改。 它指的是一个字符序列,表示为单个数据类型。 它包含了substring()、charAt()等内置函数。 可以使用' + '操作符将字符串追加到一起,从而形成一个新的字符串。