当前位置: 首页 > 面试题库 >

去扫描仪-空格是否正确?

夏长卿
2023-03-14
问题内容

Go扫描程序包中text/scanner/scanner.go使用技巧来查找空白:

const GoWhitespace = 1<<'\t' | 1<<'\n' | 1<<'\r' | 1<<' '

然后:

// skip white space
for s.Whitespace&(1<<uint(ch)) != 0 {
    ch = s.next()
}

由于字符值向左移超过31,因此在某些情况下这不是唯一的吗?我的意思是,当某些char与制表符模数32相同时,它将被识别为空格吗?


问题答案:

完全答案:

Spec明确表示,对于无符号操作,我们会屏蔽掉高位,因此低位实际上是“环绕”的。

它起作用的原因是:

  1. Scanner.Whitespace实际上uint64GoWhitespace完全适合的价值
  2. s.Whitespace&(1<<uint(ch))在运行时对无符号整数进行的运算可以具有任意大的中间值,并且会回绕。因此,如果说char为“ a”(96),我们就会1 << 96溢出,因此64位int的模大小为0。


 类似资料:
  • 我有麻烦更新一个变量的名称为一个对象使用扫描器。我提供一个菜单给用户,用户选择他的选择(更新名称),程序要求用户输入新的名称,扫描器读取system.in并更新变量的名称。唯一的问题是程序不能读取带有空格的字符串。例如: 如果键入类似的内容,则可以执行此操作,但如果键入,则将得到,输出示例如下 所以我猜它只读取t,当扫描器扫描shipProperty值时,它读取dog而不是等待输入。我读过关于的文

  • 我有一个程序,允许用户输入一个数字的学生数量,他们希望分配一个等级。然后,它打印出哪一个学生在总数中(例如6个中的1个),然后提示用户输入他们的名字和分数。 我的分数工作正确,但当最后的消息显示,我不能得到最大名称和第二个最大名称显示任何东西。

  • 问题内容: 我的Java作业有问题。我遇到了意外的异常,特别是: java.util.NoSuchElementException:找不到行 我正在使用,该程序不断读取任何内容,并重复“无效格式”异常文本。如果输入正确的值,则第一部分通过,然后该部分立即进入此异常。如果输入的值不正确,则它将开始循环异常。 这是我的代码: 问题答案: 您关闭了多个库,这些库关闭了底层库,因此另一个库将不再从同一库和

  • 问题内容: 使用Scanner类中的useDelimiter时遇到一些问题。 如果我有这个输入 美国广播公司 输出将是 AB 然后等到我键入另一个“-”以打印出最后一个字符 但是,如果我没有用户输入数据,而是将字符串插入到Scanner中,则代码将起作用。原因是什么?如何解决?我不想使用StringTokenzier 问题答案: 如果没有等待您输入另一个,则将错误地假定您已完成输入。 我的意思是,

  • 我做了一个程序,要求3个整数来输出三角形的类型。所有内容都成功运行和编译,但是,在要求用户查看是否要再次循环的部分,联机编译器会输出错误: 异常线程"main"java.util.NoSuchElement异常在java.util.Scanner.throwFor(Scanner.java:838)在java.util.Scanner.next(Scanner.java:1347)在Assignm

  • e、 (g) 此扫描仪工作不正常。但在删除close()后,它可以正常工作。 我想原因是“ystem.in”有问题。 请给我答案。 非常感谢。 )首先在a()中调用input.nextLine(),然后在b()中调用scan.nextInt()。我有错误,如NoSuchElementExcema。