① 为什么能编译 不能运行呢
你用eclipse编译的话main方法一定要放在public类中,但是如果你直接在DOS命中用javac与java编译,main方法可以不写在public类中,不过一般情况还是都写在public类中好些。
很明显你main方法没有写在public类中,因为在程序运行的时候,系统会从public类中寻找mian方法,要不然运行不了
② java 能编译但是不能运行
解决方法也很简单,有两个办法:
1.运行的时候,加上-cp参数,值是一个”.”,表示当前目录。比如:
java -cp . HelloWorld
2.在环境变量里写CLASSPATH = .\;%JAVA_HOME%\lib\tools.jar,同样,注意前面那个”.”。运行时就可以:
java HelloWorld
比起来,后面这个方法彻底点。
③ 能通过编译,但却不能成功运行
通不过MS VC++ 编译器。
(1)stacknode *newptr=(struct stacknode *)malloc(sizeof(stacknode));
应当是:
stacknode *newptr=(stacknode *)malloc(sizeof(stacknode));
(2)linkstack *s; s->top=NULL;
s没有初始化,就使用了。
(3)char elem;
scanf("%d",&elem); char 型不能用%d 格式
要么改成 unsigned char elem
要么改成 %s
④ 程序能编译,不能运行,是怎么回事
楼主:
你好!
首先,main拼写错误;
其次,根据你的思想,交换数据直接通过交换地址也是不可取的,因为尽管实现了地址的交换,但是变量a,b的值并没有发生变化。
再次,切记也通过定义*p来实现交换内容,因为指针p所指向的单元式不可预见的,给*p赋值可能对存储着一个重要的数据覆盖了,破坏了计算机的正常运行。
所以,正确的做法是:定义一个中间变量p即可:
正确的程序如下图所示:
#include<stdio.h>
int main()
{
int a,b,p;
int *p1,*p2;
printf("please enter two number:");
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p=*p1;
*p1=*p2;
*p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
return 0;
}
⑤ 可以过编译,但无法正常运行
代码太多,无法确定原因
但是初看上面贴的错误很可能不是由具体代码导致,而是你项目结构或者运行方式有错
⑥ 为什么java程序能编译却不能运行
哦,你没写程序的入口方法
public
static
void
main(string[]
args){}
在main函数的方法体中构造个对象调用你所写的方法即可
⑦ c++程序通过编译,但无法运行。
我滴个神,第一次看见变量用中文的,虽然现在编译器可以这么搞,但是劝你写任何一行代码都不要用中文作为变量名,或者方法名。
代码改了一下:PS:第一次见这么写代码的,特地用VS2012编译运行了一下,没啥大问题。老的编译器可能就不一定支持变量命名为中文了。
intmain()
{
double摄氏度;
cout<<"请输入摄氏度:";
cin>>摄氏度;
cin.get();
double华氏=0.0;
华氏=华氏度(摄氏度);//这里传错了吧,按照你的意思。
cout<<摄氏度<<"摄氏度="<<华氏<<"华氏度";
cin.get();
}
double华氏度(double摄氏)
{
//double华氏=摄氏*18+32;
double华氏=9*摄氏/5+32;
return华氏;
}
⑧ 程序编译过了,但是无法运行出结果是怎么回事
编译过了没错误,说明你的代码语法没错误。运行结果不对,是你的代码逻辑有问题,仔细检查代码逻辑流程是不是不对,调试调试。
⑨ C语言程序问题,编译成功可却不能运行,这是为什么
如果你的循环中的i值变化范围没有问题,则修改你的数组定义为:double err[502],B,W[502],W2[502],j,beta[501];你的原始定义都少了一个数组元素,会导致下标越界,进而引发运行时错误。
⑩ 可以编译,但是不能运行要怎么解决
看下C语言变量和函数命名规范