小编seh*_*seh的帖子

为什么Java整数中的整数不使用全部32位或64位?

我正在研究32位和64位.我注意到可以存储在32位中的整数值范围是,±4,294,967,295但Java int也是32位(如果我没有记错的话),它存储的值最多为±2 147 483 648.同样的事情long,它存储来自0 to ±2^63但是64位存储±2^64值的值.为什么这些价值观会有所不同?

java 64-bit 32-bit twos-complement

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

对于字符串,如何删除重复的字符?

我想要的字符串操作过程:如果有一个以上连续的字符实例,只保留第一个字母.鉴于"Steelsmith",删除第一个"e",留下字符串"Stelsmith".

这是我的算法:

void replace(string s)
{
    int length = s.length();

    for (int i = 0; i < length; i ++)
    {
        if (s[i] == s[i + 1])
        {
            s.erase(1+i);

        }

    }
    cout << s << endl;
}
Run Code Online (Sandbox Code Playgroud)

当我输入"Steelsmith"时,输出为"Ste",因此它会删除第二个'e'以及字符串的其余部分.如何保留原始字符串的其余部分?

c++ string

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

如何使用谓词函数过滤Java中的列表?

请考虑以下代码:

ICondition searchCondition, scopeCondition...
List<ICondition> filtered = CollectionUtil.filter(
    Arrays.asList(searchCondition, scopeCondition),
    CollectionUtil.isNonNull);
Run Code Online (Sandbox Code Playgroud)

它无法编译:

"该filter(Collection<T>, CollectionUtil.Predicate<T>)类型的方法CollectionUtil不适用于参数(List<ICondition>, CollectionUtil.Predicate<Object>)"

如果我定义一个ICondition特定的isNonNull()谓词,一切都很好,但这是愚蠢的,我不明白什么是错的或如何解决它.

这是我的实用功能:

public interface Predicate<T> 
{
    boolean apply(T type); 
}

public static <T> List<T> filter(Collection<T> target, Predicate<T> predicate) 
{
    target = Collections.unmodifiableCollection(target);
    List<T> result = new ArrayList<T>();
    for (T element: target) {
        if (predicate.apply(element)) {
            result.add(element);
        }
    }
    return result;
}


// This predicate works as expected.
public static CollectionUtil.Predicate<String> isStringNonBlank = new CollectionUtil.Predicate<String>() { …
Run Code Online (Sandbox Code Playgroud)

java generics collections contravariance

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

如何搜索其内容与另一个匹配的数组?

我有一个int数组的ArrayList,当我询问它是否包含指定的坐标时返回false.它确实包含我请求的坐标,因此它应该返回TRUE.

这是我的代码.

    //debug code
    for (int i = 0; i < Locations.size(); i++)
    {
        int[] TestLoc = Locations.get(i);

        System.out.print(TestLoc[0] + " " + TestLoc[1] + " " + TestLoc[2] + " == " + Location[0] + " " + Location[1] + " " + Location[2] + "? - ");

        if (Location == TestLoc)
        {
            System.out.println("TRUE");
        }

        else
        {
            System.out.println("FALSE");
        }
    }

    //real code
    if (Locations.contains(Location))
    {
        Locations.remove(Location);
    }

    else
    {
        System.out.println("FAIL");
    }
Run Code Online (Sandbox Code Playgroud)

并输出,当列表包含4个坐标时请求坐标57,64,105.

56 64 105 == 57 …

java arrays equality reference contains

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

组合数组中的字符串值

我创建了一个循环,它接受一个int,将其转换为一个字符数组,并根据数组中的字符显示值.如何在同一行上打印值?换句话说,而不是:

我需要:

价值价值

public static int getValue(int number) {
  final PrintStream ps = System.out;
  for (char c : Integer.toString(number).toCharArray())
    switch (c) {
    case '0':
      ps.println('a');
      break;
    case '1':
      ps.println('b');
      break;
    case '2':
      ps.println('c');
      break;
    // etc.
    }
Run Code Online (Sandbox Code Playgroud)

java

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

去"&^"运算符,这是什么意思?

我努力理解什么&^&^=运营商在围棋的意思.我无法在文档中找到答案(说明它有点清晰的操作符,但它对我没有多大帮助)或者通过试验.

特别是,我想知道Python中是否存在等价物.

python bit-manipulation operators go

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