【问题标题】:Code doesn't allow the user to input letters代码不允许用户输入字母
【发布时间】:2014-01-16 17:18:18
【问题描述】:

到目前为止,我有一个要求用户输入的代码,但我的部分代码不接受字母作为输入。例如,如果我输入说 woah123,它会给我一个数字格式异常。有什么办法可以解决这个问题?错误在第二行 int i = Integer.parseInt(sentence)。 句子是用户输入

sentence.replaceAll("\\D", "");
int i = Integer.parseInt(sentence);
i = i * 2 ;
woah.replaceAll("\\d", "" + i);
System.out.println(woah);

【问题讨论】:

  • 字符串是不可变的。应该是sentence = sentence.replaceAll("\\D", "");
  • @ZouZou 将其发布为答案
  • @ZouZou woah 也一样。
  • 昨天我在“SO”上遇到了同样的问题。怎么了?

标签: java


【解决方案1】:

字符串是不可变的。

通常,您对不可变对象所做的每一次修改都会“给您”另一个不可变对象。

应该是这样的:

sentence = sentence.replaceAll("\\D", "");

确实,您必须为woah 做同样的事情。

您可以了解什么是immutable object

【讨论】:

  • 假设 OP 可能是 Java 的新手/编程immutable object 意味着您在此对象上调用的每个方法都不会改变其状态(不会影响它),它会可选地为您提供新的对象相同类型但状态已更改。在这种情况下,由于 String 是不可变的,replaceAll 将为您提供具有更改字符的新 String 对象,但不会影响原始对象,因此如果您想更新 sentence 引用,您需要将 replaceAll 的结果分配给此引用,例如ZouZou 在他的回答中表现出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多