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

fmt.Scanln预期的换行错误

程仲卿
2023-03-14
问题内容

我正在尝试学习Go,但是坚持使用以下语言:http :
//ideone.com/hbCamr或http://ideone.com/OvRw7t

package main
import "fmt"

func main(){
  var i int
  var f float64
  var s string

  _, err := fmt.Scan(&i)
  if err == nil {
    fmt.Println("read 1 integer: ",i)
  } else {
    fmt.Println("Error: ",err)
  }

  _, err = fmt.Scan(&f)
  if err == nil {
    fmt.Println("read 1 float64: ",f)
  } else {
    fmt.Println("Error: ",err)
  }
  _, err = fmt.Scan(&s)
  if err == nil {
    fmt.Println("read 1 string: ",s)
  } else {
    fmt.Println("Error: ",err)
  }

  _, err = fmt.Scanln(&s)
  if err == nil {
    fmt.Println("read 1 line: ",s)
  } else {
    fmt.Println("Error: ",err)
  }
}

对于此输入:

123
123.456
everybody loves ice cream

输出为:

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody
Error:  Scan: expected newline

这是预期的行为吗?为什么它不像C ++
getline一样起作用?http://ideone.com/Wx8z5o


问题答案:

答案在以下文档中Scanln

Scanln与Scan相似,但是在换行符处停止扫描,并且在最后一个项目之后必须有换行符或EOF。

Scan表现也与文档中的一样:

扫描扫描从标准输入读取的文本,并将连续的以空格分隔的值存储到连续的参数中。换行符算作空格。它返回成功扫描的项目数。如果该数目少于参数数目,则err将报告原因。

结论:Scan将每个单词(由空格分隔的字符串)放入相应的参数,将换行符视为空格。Scanln这样做也一样,但是将换行符视为停止符,此后不再解析。

如果您想读一行(\n最后),请使用bufio.Reader及其ReadString方法:

line, err := buffer.ReadString('\n')


 类似资料:
  • 我不断地得到这个错误,我并没有试图解决它。 包bonuscalc; 导入java.text.DecimalFormat;导入java.util.scanner; 公共类BonusCalc{/***@param args命令行参数*/public static void main(String[]args){ }

  • 问题内容: 我注意到了一些意外的行为(相对于我的个人期望而言是意外的),我想知道是否是JVM中存在错误,或者这可能是一种边缘情况,在这种情况下我不了解某些确切的细节应该发生。假设我们自己在main方法中具有以下代码: 天真的期望是这样会印刷,最大的甚至可以代表。但是,我认为整数算术应该在Java中“翻转”,因此将1加到会导致。由于仍小于,因此循环将循环遍历负数甚至整数。最终它将回到0,并且此过程应

  • 问题内容: 以下是我编写的用于验证用户登录凭据的代码。使用.net编写的Web服务 符合 我的说法 我不知道错误是什么。这段代码非常适合模拟器(更改)。 请帮我解决这个问题。 谢谢。 问题答案: 我发现这个问题的答案是,在SOAP_ADDRESS字符串中,删除/ WebSiteName部分,它可以正常工作。我已经在我的android设备中对此进行了测试。完美运作。 更正后的字符串应如下所示: 其中

  • 问题内容: 我不明白为什么python会出现“预期的缩进块”错误? 问题答案: 您必须在函数定义之后缩进文档字符串(第3、4行): 缩进: 或者,您也可以使用发表评论: 此外,您可以看到有关文档字符串的PEP 257。 希望这可以帮助!

  • 这是我代码的第一部分: 编译后,它告诉我行(和)上的“预期”:双f(双x){ 我做错了什么?我是java新手,如果还有其他重大错误,我很抱歉。我试图使用一个函数f(x),我相信它是按照我所展示的方式编写的,但我一直得到同样的错误。

  • 问题内容: 我正在尝试使用将a的布尔值传递给另一个类。由于某些原因,在包含开关的类中,应该将值设置为的语句无法读取开关声明。 ViewController.swift 在第一个If语句(shrimpSwitch.on)中,它将显示Expected Declaration。我是在声明所有开关错误吗?任何帮助,将不胜感激。谢谢 问题答案: 问题是您需要将代码放入方法中。您所需要做的就是将其移动到vie