你可以从问题本身中理解,我是Java的新手.我接受了练习来编写一个Java程序,它接收一个字符,打印它并在Unicode表中输入下一个字符.
现在,我有这个练习的解决方案:
public static void main(String[] args){
char c = args[0].charAt(0);
char c1 = (char)(c + 1);
System.out.println(c + "\t" + c1);
}
Run Code Online (Sandbox Code Playgroud)
我理解这段代码的基本思想,但我试图在Eclipse中运行这段代码我遇到了一个恼人的错误:
线程"main"中的异常java.lang.ArrayIndexOutOfBoundsException:0在MainClass.main(MainClass.java:9)
注意:我还没有运行实际接收某些东西作为参数的Java程序,所以我猜这是一个愚蠢的初学者的错误......这是我尝试在Eclipse中编译的完整代码:
public class MainClass {
/**
* @param args
*/
public static void main(String[] args){
char c = args[0].charAt(0);
char c1 = (char)(c + 1);
System.out.println(c + "\t" + c1);
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
设G =(V,E)为加权,连通和无向图,并且令T为最小生成树.设e是不在E中的任何边(并且具有权重W(e)).证明或反驳:TU {e}是包含G'=(V,EU {e})的最小生成树的边集.
嗯,这对我来说听起来是对的,所以我决定证明这一点,但我每次都被卡住了......
例如,如果e是具有最小权重的新边缘,那么谁可以向我们保证T中的边缘不会以不良方式被选择,这将阻止我们在没有E中其他边缘的"帮助"的情况下获得新的最小权重 - T?
我将不胜感激任何帮助,在此先感谢.
algorithm minimum-spanning-tree graph-algorithm kruskals-algorithm
我相信这种语言不是上下文,因为PDA不可能比较2个0和1的相同长度的块,并且还记住它的长度以供以后使用.
不幸的是,我不知道如何证明它.
我尝试使用泵浦引理无济于事......
我还试图通过矛盾来假设语言是无上下文的,并且使用这样一个事实,即上下文无关语言与常规语言的交集也是无上下文的(通过找到一些神秘的常规语言L),并且令人惊讶(或者不是) ) - 我所有的努力都是徒劳的......
任何帮助,将不胜感激
computer-science context-free-grammar pushdown-automaton regular-language
假设我们有一个名为hi.txt的文本文件,其中包含以下字符串:
AbCdE12345
假设我们运行此代码:
int main() {
FILE *fp;
fp = fopen("hi.txt","r");
if(NULL == fp) { return 1; }
fseek(fp,-1, SEEK_END);
while (ftell(fp) > 0) {
printf("%c",fgetc(fp));
fseek(fp,-4, SEEK_CUR);
}
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它打印出来: 3EbCd
当我试图猜测它会打印什么时,我认为它应该是52d.谁能解释一下这里发生了什么?
设G =(V,E)是一个网络,其中s和t是源和接收器.设f为G中的最大流量.找到一个算法,确定G中是否存在唯一的最小割数.
我在这个网站上找到了类似的问题:
在那里给出答案的摘要:
找到残差图中s可到达的所有顶点,我们在G中找到了最小割(S,T).
从t开始,查看相同的残差图.查看箭头反方向可从t到达的顶点组(意味着可以到达t的所有顶点).
这个小组也是一个小切.
如果切割与原始切割相同,那么只有一个.否则,您刚刚发现了2个切口,因此原始切割不可能是唯一的.
我不明白为什么如果切割与原始切割相同,那么切割是独特的.谁可以向我们保证没有其他的减产?
提前致谢
这段代码给了我一个分段错误:
char *s1 = "String 1", *s2 = "String 2";
void swap(char **, char **);
int main(void) {
swap(&s1, &s2);
return 0;
}
void swap(char **p, char **q) {
char **tmp;
*tmp = *p;
*p = *q;
*q = *tmp;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将最后一个函数的主体更改为此代码,则不会产生任何问题:
char *tmp;
tmp = *p;
*p = *q;
*q = tmp;
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么我的第一个代码会出现分段错误.提前致谢.
从可写char数组中删除第i个字符(第一个索引为0,第二个为1等).您认为这是执行此任务的合法方式:
void delete_char(char *str, int i) {
strcpy(str + i,str + i + 1);
}
Run Code Online (Sandbox Code Playgroud)
我们可以指望函数strcpy总是将字符从最左边的位置复制到最右边的位置吗?
我正在尝试学习如何在Ubuntu中使用带有C的makefile(我猜你是初学者).在"A Book on C"中有一章关于这个主题,他们给出了一个简单的3个文件示例:main.c,sum.c,sum.h(无代码)和带有此代码的makefile:
sum: main.o sum.o
gcc –o sum main.o sum.o
main.o: main.c sum.h
gcc –c main.c
sum.o: sum.c sum.h
gcc –c sum.c
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试在eclipse中编译此代码,但它不起作用.我用上面的代码和前面提到的3个文件创建了一个名为makefile的文件.这是我得到的错误:
make all
make: *** No rule to make target `all'. Stop.
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何帮助.谢谢
假设我在C中使用多个.c
文件处理一个大项目,有什么理由我更喜欢有多个头文件而不是单个头文件?
还有一个问题:
比方说,我有3个文件:header.h
,main.c
和other.c
.
我有一个名为的函数func()
,它只在文件中定义和使用other.c
.我应该将函数原型放在头文件或文件中other.c
吗?
我试图理解为什么这段代码编译:
public class A {
}
public class B extends A {
public B() {
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这段代码没有:
public class A {
public A(int n) {
}
}
public class B extends A {
public B() {
}
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,在这两种情况下,A类都没有空白构造函数吗?如果是这样,为什么它不起作用?
提前致谢
我是C,Ubuntu的新手,并决定安装Valgrind并在这个简单的C代码上测试它:
#include <stdio.h>
int *p;
int main(void) {
p = calloc(100, sizeof(int));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我已将此代码放在sum.c文件中并进行编译.然后我输入了:
valgrind --tool=memcheck --leak-check=yes sum
Run Code Online (Sandbox Code Playgroud)
在终端窗口,这是我得到的:
我不知道它是继续循环还是只是卡住,但它会保持这种方式,直到我点击ctrl + d来停止它,这就是我得到的:
难道我做错了什么 ?为什么我不能看到我有内存泄漏?
顺便说一句,这是Ubuntu版本11.04.
提前致谢
c ×6
eclipse ×2
java ×2
algorithm ×1
constructor ×1
inheritance ×1
makefile ×1
max-flow ×1
network-flow ×1
pointers ×1
string ×1
ubuntu ×1
valgrind ×1