小编Nei*_*ker的帖子

将变量添加到自身,其中后缀增量在Java/c#中不同于在C中

在Java和C#中如果我这样做:

int i=1;
int j= i++ + i;
Run Code Online (Sandbox Code Playgroud)

j是3,即它转换为1 + 2并在加法之前递增i.

但是,在C j中是2,即它转换为1 + 1然后递增i.

C和Java/C#中的内部机制是什么导致表达式的差异?

(同样适用于后期修复.Java/C#变为4,C变为3.)

谢谢.

顺便说一句,最初我认为这将是C答案,因此被Java/C#结果搞糊涂了.

c java postfix-notation

1
推荐指数
1
解决办法
2232
查看次数

返回没有迭代的匹配列表项的计数(java)

唯一的答案是递归或以某种方式将List转换为字符串,但给出了一个字符串列表,例如

List<String> items = Arrays.asList("a,b,a,c,d,e,a".split("\\s*,\\s*"));
Run Code Online (Sandbox Code Playgroud)

如何在不使用迭代的情况下在任何类型的List中找到特定值的出现次数(我假设您可以忽略库方法的工作方式),例如在上面的'a'中将具有值3.

是的,这是一个面试问题:)

java list counting

1
推荐指数
1
解决办法
475
查看次数

为基于字典的类创建多个自定义比较器

我希望我的班级从字典中返回一个列表,但允许使用预先编写的比较方法进行自定义排序.在我正在转换的原始java代码中,我在我的类中使用Google Guava Ordering创建了比较方法,然后在一个公共比较器方法中传递了一个名为以下的方法,类似于:

public List<Word> getWords(Comparator c) { }
Run Code Online (Sandbox Code Playgroud)

我试图在C#中重新创建它,但我无法弄清楚如何.基本上在下面的代码中,您可以看到每种类型的排序有三个版本,此外我最终为每个返回值创建两个列表,这似乎有点浪费.

我看着创建委托但有点迷失,然后想我可以创建一个IComparable,但后来看到IComparator然后看到Sort方法需要一个Comparator.

有人可以指出我以最佳方式将其转换为单一类型的"GetWords",允许客户调用GetWords从预先提供的排序集中检索排序列表.

public partial class WordTable
{
    private Dictionary<string, Word> words;

    public WordTable()
    {
        //for testing
        words = new Dictionary<string, Word>();
        words.Add("B", new Word("B", WordTypes.Adjective));
        words.Add("A", new Word("A", WordTypes.Noun));
        words.Add("D", new Word("D", WordTypes.Verb));
    }
    public List<Word> GetWords()
    {
        return words.Values.ToList();
    }
    public List<Word> GetWordsByName()
    {
        List<Word> list = words.Values.ToList<Word>();
        return list.OrderBy(word => word.Name).ToList();
    }
    public List<Word> GetWordsByType()
    {
        List<Word> list = words.Values.ToList<Word>();
        return list.OrderBy(word => word.Type).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
63
查看次数

编解码器无法解码字节 0x81

我有一段简单的代码:

file = open(filename, "r", encoding="utf-8")
num_lines = sum(1 for line in open(filename))
Run Code Online (Sandbox Code Playgroud)

我只是想获取文件中的行数。但是我不断收到此错误。我正在考虑跳过 Python 并用 C# 来完成;-)

有人可以帮忙吗?我在搜索错误后添加了“utf-8”并阅读它应该修复它。该文件只是一个简单的文本文件,而不是图像。虽然文件很大。它实际上是一个 CSV 字符串,但我只想在开始处理它之前了解一下行数。

非常感谢。

in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 4344: 
character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

python codec

1
推荐指数
1
解决办法
2万
查看次数

将循环和输出压缩成一个语句

我从一个简单的例子开始,将Python代码与c#(我更常用的语言)进行比较:

s=''
for x in range(20,1,-3):
    print(x)
    s+="%d%s" % (x,":")
print(s[:-1])
Run Code Online (Sandbox Code Playgroud)

简单输出:20:17:14:11:8:5:2

然后我想到了最短的,不一定是最有效的方法,并在阅读了列表理解之后得出了这个.

print(''.join([("%d%s" % (x,":")) for x in range(20,1,-3)])[:-1])
Run Code Online (Sandbox Code Playgroud)

还有更短的路吗?我知道这是一个微不足道的问题,但实际上它是关于学习Python的所有功能以及它与其他语言的区别.

谢谢.

python

0
推荐指数
2
解决办法
97
查看次数

git status 没有显示更新,但 pull 会降低更改

我在一个文件夹上运行了一个“git status”,它回答说:

$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

但是,运行 git log 未能显示我知道的最新更新:

* e2f5a0b (HEAD -> master, origin/master, origin/HEAD) First version of all
* f11f989 Initial commit
Run Code Online (Sandbox Code Playgroud)

所以我运行了 'git pull' 并关闭了所有更新:

* 057c274 (HEAD -> master, origin/master, origin/HEAD) update for ginger
* e2f5a0b First version of all
* f11f989 Initial commit
Run Code Online (Sandbox Code Playgroud)

我没能理解 git 的某些内容吗?是不是因为 Git 状态只适用于当前文件夹——我所有的更新都在一个子目录中?

请注意,我唯一能看到的,这可能只是一个红鲱鱼,是当我查看网络服务器(我正在使用 gitlab)时,我可以看到更新,但在尝试查看文件历史记录时,它告诉我所有已更改但未能显示差异的文件(我确实读过 diff 有 utf16 问题,但这不能解释这个错误?)

谢谢你的帮助。

[编辑]注意,当我查看历史记录时,它说“二进制文件不同”,但这些都是 .SQL 文本文件,仅由 …

git

0
推荐指数
1
解决办法
109
查看次数

标签 统计

java ×2

python ×2

c ×1

c# ×1

codec ×1

counting ×1

git ×1

list ×1

postfix-notation ×1