小编Hat*_*end的帖子

写"一个但不是两个"情况的正确方法?

这个问题确实是随意的,所以我会尽力解释它.我正在循环两个未知大小的字符串.

bool check(char *str1, char *str2)
{
    char special = 'k';

    for (int size_t i = 0;              ; i++)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我希望for循环的终止条件如下:

只有当str1 [i] ==特殊OR str2 [i] ==特殊时才离开循环,但不能同时保留两者.

对于这个问题,忽略我可能会分段故障的事实,因为我既不知道大小也不知道我要检查0x00.

我知道如何写这个,但它总是非常混乱,涉及使用三元条件运算符.什么是更好的写作方式?

c expression

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

难以从Java中的另一个类调用ArrayLists和Methods

第一次海报,长期潜伏者.

我是第二年计算机科学专业学生,试图编写一个二十一点游戏.这不是一个家庭作业,它只是一个有趣的项目.它没有这样做,所以游戏本身还没准备好,所以请忽略该部分.我花了大约两个小时搜索SO以获得答案,但无法将其他用户的类似问题与我自己的问题进行比较,因此我决定发布我的问题.

我的问题是'deck'ArrayList.从我的Blackjack.java文件中,无论我做什么,我都无法调用它,我无法调用我的Card类中的任何方法,我无法操纵它,我似乎无法做任何事情而不会收到某种错误.

public class Blackjack {
    public int bet;
    public int earnings = 0;
    public int total = 100;
    public boolean inputNeeded = true;

    public Blackjack() {
        Scanner s = new Scanner(System.in);

        System.out.println("               Welcome to Blackjack.");
        System.out.println("             Enter any key to continue.");
        System.out.println("         Otherwise, please type Exit to quit.");

        while (!s.nextLine().toString().toLowerCase().equals("exit")) //Main Game Loop - Only ends when user types Exit.
        {
            while (inputNeeded) {
                System.out.println("You currently have $" + total + ".");
                System.out.print("Please place your bets now. (Min …
Run Code Online (Sandbox Code Playgroud)

java methods getter class arraylist

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

多重定义符号的链接器错误

我有以下文件结构:

XH

#pragma once

#include "Y.h"

int ONE = 1;

int combine();
Run Code Online (Sandbox Code Playgroud)

XC

#include "X.h"

int combine()
{
    return ONE + TWO;
}
Run Code Online (Sandbox Code Playgroud)

YH

#pragma once

int TWO = 2;
Run Code Online (Sandbox Code Playgroud)

YC

#include "Y.h"
Run Code Online (Sandbox Code Playgroud)

MAIN.C

#include "X.h"

int main()
{
    int fusion = combine();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

LNK1169 one or more multiply defined symbols found

LNK2005 _ONE already defined in Main.obj

LNK2005 _TWO already defined in Main.obj

KLNK2005 _TWO already defined in Main.obj
Run Code Online (Sandbox Code Playgroud)

这没有任何意义.如果我们从Main.c编译器开始必须包含X.h.然后编译器查找与之关联的C文件X.h.里面 …

c

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

C - 构造函数,最好返回结构体还是指向结构体的指针?

我目前正在用 C 制作一个 RedBlackTree,但在为您的结构提供构造函数时,我仍然不明白哪个更好/更理想。

struct RedBlackTree* RedBlackTree_new()
{
    struct RedBlackTree *tree = calloc(1, sizeof(struct RedBlackTree));
    if (tree == NULL)
        error(DS_MSG_OUT_OF_MEM);
    return tree 
}
Run Code Online (Sandbox Code Playgroud)

对比。

struct RedBlackTree RedBlackTree_new()
{
    struct RedBlackTree tree;
    tree.root = NULL;
    tree.size = 0;
    return tree;
}
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果我选择第二个选项,那么我必须不断地将它作为指针传递给我的函数&,据我所知,在我的程序结束之前我永远无法销毁它(有人可以验证这是否属实?)。例如,如果destroy我的 Tree有一个函数,RedBlackTree如果它们不是用malloc或创建的,我将无法释放从结构中分配的内存,calloc对吗?

同样在更一般的情况下,两者的优点和缺点是什么?我总是可以通过 using 从指针中检索数据,*并且我总是可以通过 using将我的数据转换为指针&,所以几乎感觉它们在某种意义上是完全可以互换的。

c struct pointers

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

Java - forEach的基本流使用

我有一个叫做Data只有一种方法的类:

public boolean isValid()
Run Code Online (Sandbox Code Playgroud)

我有一个List,Data我想通过Java 8流循环它们.我需要计算其中valid Data有多少个对象List并仅打印valid条目.

下面是我走了多远,但我不明白怎么做.

List<Data> ar = new ArrayList<>();
...
// ar is now full of Data objects.
...

int count = ar.stream()
            .filter(Data::isValid)
            .forEach(System.out::println)
            .count(); // Compiler error, forEach() does not return type stream.
Run Code Online (Sandbox Code Playgroud)

我的第二次尝试:(可怕的代码)

List<Data> ar = new ArrayList<>();
...
// Must be final or compiler error will happen via inner class.
final AtomicInteger counter = new AtomicInteger();
ar.stream()
    .filter(Data:isValid)
    .forEach(d -> …
Run Code Online (Sandbox Code Playgroud)

java java-stream

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

具有参数化集合的泛型?

我正在尝试创建一个HashMap版本,如果输入重复键,则不会替换该值,但实际上将两个相应的值一起添加.键值必须是类型,Number以便可以进行添加.但是,它似乎并不理解我V的类型Number,或者至少它是在我试图打电话之前super.put.这就好像Vin HashMap实际上并不是V我声明的那个extend Number.

这里发生了什么?

public class AdditiveMap<K, V extends Number> extends HashMap<K, V>
{
    @Override
    public V put(final K key, final V value)
    {
        if (containsKey(key))
            // Second param Found 'Number', required 'V'
            super.put(key, (Number)(get(key).intValue() + value.intValue()));
        else 
            super.put(key, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

java generics

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

如何malloc块大小的UINT_MAX?

我想创建一个具有确切UINT_MAX索引数的数组.由于某些原因,这非常困难.我尝试过以下方法:

  • char arr[UINT_MAX]; // Compiler claims array size cannot be negative
  • char* const arr = calloc(UINT_MAX, sizeof(char)); // Runs but seg fault when accessed
  • char* const arr = malloc(sizeof(char) * UINT_MAX); // arr is NULL

我不明白发生了什么.这是我的HEAP尺寸太低了吗?如果是这样,我该如何增加它?无法malloc/calloc处理那种性质的块?我发现没有什么有用malloccallocAPI页面.

这个问题适用于C和C++.

Windows 7 64位,16GB RAM,CMake 3.6.1,GCC 7.11.1,并在CLion 64位上编译.

c arrays malloc

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

C - Malloc崩溃/指针损坏的堆

我有一个2D LinkedList的结构我正在制作:

struct Node
{
    void *data;
    struct Node *up, *left, *right, *down;
};
Run Code Online (Sandbox Code Playgroud)

因为我已经习惯了Java,所以我创建了一个假装成构造函数的函数,它看起来像:

struct Node* buildNode(void *data)
{
    struct Node *node = malloc(sizeof(struct Node*)); // Program crashes here.
    node->data = data;
    node->up = NULL;
    node->left = NULL;
    node->right = NULL;
    node->down = NULL;
    return node;
}
Run Code Online (Sandbox Code Playgroud)

我的程序在到达malloc第二段中的行时崩溃.如果我*从中删除malloc(sizeof(struct Node*))它,它不会崩溃并正常工作.

为什么是这样?我的buildNode函数只是返回一个指向a的指针Node,而实际上并没有返回Node结构本身.我得到的错误与腐败堆有关,因为我对C有点新,我不明白这一切意味着什么.

谢谢!

c malloc pointers

-3
推荐指数
1
解决办法
554
查看次数

标签 统计

c ×5

java ×3

malloc ×2

pointers ×2

arraylist ×1

arrays ×1

class ×1

expression ×1

generics ×1

getter ×1

java-stream ×1

methods ×1

struct ×1