【问题标题】:Check for octal duplicates in array elements Perl检查数组元素中的八进制重复 Perl
【发布时间】:2017-03-17 07:15:42
【问题描述】:

我有这个循环来检查数组中的重复元素。问题是一旦数组有八进制数,编译器就会抛出错误。我该如何做这个工作?

my @array1 = (010895401, 010895401, 010895402, 010895403); 

my %seen;

foreach my $octal (@array1)
{
    next unless $seen{$octal}++;
    print "'$octal' is duplicated.\n"
}

【问题讨论】:

  • 带有 8 和 9 的八进制数没有多大意义。你想表达什么意思?
  • 问题是你在数组中找不到重复的数字,因为那些不是数字
  • 如果数组是数字数组,那么010(八进制)是8(十进制)的副本。而且它是0010 的副本,因为额外的前导零无关紧要。并且可能也是8.00.8e+1 的副本。如果你想要字符串比较,按照工具说的做
  • 那个教程已经过时了。你不应该使用它。你可以知道,因为它在示例中没有use strict
  • 为了将来参考,您的问题不应该说“编译器抛出错误”。相反,它应该给出准确的错误信息。

标签: arrays perl loops octal


【解决方案1】:

它会抛出这个错误Illegal octal digit '8' and '9' at main.pl line 1, at end of line

0 开头的文字(以0x0. 开头的文字除外)应为数字的八进制表示。数字的八进制表示仅由数字 0-7 组成(类似于数字的二进制表示仅由数字 0 和 1 组成)。

因此,010895401 应该是数字的八进制表示,但它不是。 010895401 没有意义。

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2018-04-06
    • 1970-01-01
    • 2011-11-14
    • 2014-08-25
    相关资源
    最近更新 更多