You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java转C#作业编译报CS1041错误:提示标识符预期`in`为关键字

报错根因

这个CS1041报错的逻辑非常直接:编译器在本该识别合法自定义名称(也就是标识符,比如变量名、参数名)的位置,碰到了C#的保留关键字 in,无法解析出有效的名称,就抛出了这个错误。
你遇到的这个问题完全是在线代码转换器没做好语言适配导致的,除了关键字的错误,转换出的代码还存在其他必然无法编译的问题:

  • 转换器生成代码时漏写了语法结构里的变量名,把 in 直接放到了需要放标识符的位置——比如foreach循环里漏写循环变量,直接写成foreach (int in 集合名),这时候本该填变量名的位置出现了关键字 in,刚好匹配报错的行列提示。
  • 转换器直接照搬了Java专属的Scanner输入逻辑,C#标准库根本没有内置Scanner类,这部分代码本身就无法编译,还可能连带导致编译器解析位置错乱,报出和实际问题不匹配的错误。
修复操作
  • 逐行排查所有出现in的位置:
    • 只要是出现在变量名、参数名、循环变量名这类需要填自定义名称位置的 in,全部替换成合法的自定义名称。比如漏写的循环变量补上名称,写成C#合法的foreach语法:
      foreach (int i in arr1)
      
    • 注意:foreach语法里,连接循环变量和遍历集合的 in 是C#规定的合法语法关键字,不需要修改。
  • 把照搬Java的输入逻辑替换为C#标准实现:
    1. 删掉代码里的Scanner scan = new Scanner(System.in);这行Java专有代码
    2. 把循环里读取输入的arr1[i] = scan.Next();替换为C#控制台读取逻辑:
      arr1[i] = int.Parse(Console.ReadLine());
      
  • 修改完成后重新编译,顺手核对原Java作业的要求,比如代码里统计数组奇偶个数的部分,确认计数逻辑和题目要求一致,避免只完成排序功能漏了统计要求。

内容的提问来源于stack exchange,提问作者hanan farhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 07:36:03