这个问题确实是随意的,所以我会尽力解释它.我正在循环两个未知大小的字符串.
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.
我知道如何写这个,但它总是非常混乱,涉及使用三元条件运算符.什么是更好的写作方式?
第一次海报,长期潜伏者.
我是第二年计算机科学专业学生,试图编写一个二十一点游戏.这不是一个家庭作业,它只是一个有趣的项目.它没有这样做,所以游戏本身还没准备好,所以请忽略该部分.我花了大约两个小时搜索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) 我有以下文件结构:
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 制作一个 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将我的数据转换为指针&,所以几乎感觉它们在某种意义上是完全可以互换的。
我有一个叫做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) 我正在尝试创建一个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) 我想创建一个具有确切UINT_MAX索引数的数组.由于某些原因,这非常困难.我尝试过以下方法:
char arr[UINT_MAX]; // Compiler claims array size cannot be negativechar* const arr = calloc(UINT_MAX, sizeof(char)); // Runs but seg fault when accessedchar* const arr = malloc(sizeof(char) * UINT_MAX); // arr is NULL我不明白发生了什么.这是我的HEAP尺寸太低了吗?如果是这样,我该如何增加它?无法malloc/calloc处理那种性质的块?我发现没有什么有用malloc或callocAPI页面.
这个问题适用于C和C++.
Windows 7 64位,16GB RAM,CMake 3.6.1,GCC 7.11.1,并在CLion 64位上编译.
我有一个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有点新,我不明白这一切意味着什么.
谢谢!