java代码oj运行错误 java运行出现jni错误

南阳理工OJ第一题A+B problem 用java编程在eclipse上能运行正确,为什么在OJ上提交时总是CompileError!import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a + b);
}
}
用这个试试
北大OJ的1012题java做出莫名奇妙的runtime error这样java代码oj运行错误的检测没有进行有效地检测
当m = 5 以后java代码oj运行错误 , 计算量比较大 , 时间就太长 。。
#include stdio.h
void POJ1012();
//int result[]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};
int main()
{
POJ1012();
return 0;
}
void POJ1012()
{
int i,k;
int result[14]={0};
scanf("%d",k);
while(k!=0)
{
// printf("%d\n",result[k]);
int leftguys,m,flag,cur,next;
i=1;
while(true)
{
if(result[k]!=0)
{
printf("%d\n",result[k]);
break;
}
//m为移动java代码oj运行错误的个数,cur为移动前索引,以0为起点
//m只能为k+1的整数倍或者是k+1的整数倍加1,
//因为只剩下K+1个人时 , cur索引必位于k或k+1上
m=(k+1)*i;
for(int j=0;j2;j++)
{
cur=-1;
flag=true;
for(leftguys=2*k;leftguysk;--leftguys)
{
next = (cur+m)%leftguys;
if(nextk)
{
flag=false;
break;
}
cur = next-1;
}
if(flag)
{
printf("%d\n",m);
result[k]=m;
break;
}
m=(k+1)*i+1;
}
if(flag)
break;
++i;
}
scanf("%d",k);
}
}
为什么java oj老是wrong answer?你的写法里一个方法输入六个参数 , 这种方法很难读的,而且变量名没有体现可读性 , 你说abcdef到底啥意思?一个方法参数过多可以直接拆分为多个方法,再方法套用就可以了;max方法其实一句话a=ab?a:b;可以实现了,不需要再搞出来方法
个人建议你新建一个类,把点的三个数据封装为一个坐标对象point(x,y,z),然后利用数组把你的输入数据封装到数组point p[]里 , 这样一维数组就足够用了,不需要二维 。然后再设计几个成员方法 , 第一个是计算两个任意点对象的距离以求出边长,第二个是利用海伦公式三边长可以直接求面积设计方法来得到面积值,然后再用三个for循环内嵌,相当于定二移一,逻辑记录最大值输出即可
你看我写的代码,是不是比较容易看得懂什么意思?当然没有加入合法性检验,这个你自己肯定会写我就不写了
package com.at.java;
import java.util.Scanner;
public class JustTest {
public static void main(String args[]) {
int i=0,j=0,k=0;double maxArea=0;int num=0;
String s=new String(" ");
String str[]=new String[3];
System.out.println("请输入点个数:");
Scanner sc1=new Scanner(System.in);
num=sc1.nextInt();
sc1.nextLine(); /*必须加一行以过滤上面的回车键否则报错**/
Point p[]=new Point[num];
for(i=0;inum;i++)
{
p[i]=new Point(0,0,0);
}/*对象数组成员必须初始化,否则报错空指针**/
System.out.println("请输入三个数据代表x,y,z,之间以空格间隔,以回车结束:");
for(i=0;inum;i++)
{
s=sc1.nextLine();/*按照图像要求,必须使用nextLine方法接受字符串 , 因为nextInt方法不可能得到图示的输入结果**/
str=s.split(" ",3);/*以空格为拆解符 , 拆解为3个储存数字的字符串**/
p[i].x=Double.parseDouble(str[0]);
p[i].y=Double.parseDouble(str[1]);

推荐阅读