JAVA中如何让一个方法输入输出两个数组?在线急等!!!
这是我写的代码:publicstaticvoidmain(String[]arg){int[]hq=newint[33];int[]lq=newint[16];m1(hq...
这是我写的代码:
public static void main(String[] arg) {
int[] hq = new int[33];
int[] lq = new int[16];
m1(hq,lq);
}
public static int[] m1(int[] hq,int[]lq) {
for(int i = 1;i<hq.length+lq.length;i++){
hq[i-1] = i<=hq.length ? i:i;
lq[i-1-hq.length] = i<=hq.length ? i-hq.length: i-hq.length;
我的想法是让两个数组对象在另外一个方法中赋值之后再返回主方法,该怎么操作?在线急等!!!
顺便问一下关于三元运算符的,像这个式子:
hq[i-1] = i<=hq.length ? i : i;
我想让 i<=hq.length如果是假就不赋值,该怎么做呢? 展开
public static void main(String[] arg) {
int[] hq = new int[33];
int[] lq = new int[16];
m1(hq,lq);
}
public static int[] m1(int[] hq,int[]lq) {
for(int i = 1;i<hq.length+lq.length;i++){
hq[i-1] = i<=hq.length ? i:i;
lq[i-1-hq.length] = i<=hq.length ? i-hq.length: i-hq.length;
我的想法是让两个数组对象在另外一个方法中赋值之后再返回主方法,该怎么操作?在线急等!!!
顺便问一下关于三元运算符的,像这个式子:
hq[i-1] = i<=hq.length ? i : i;
我想让 i<=hq.length如果是假就不赋值,该怎么做呢? 展开
展开全部
代码分析
代码误区1: i=1; 数组下标都从0开始,不建议开始值为1,会增加运算量;
代码误区2: i<hq.length+lq.length 会增加循环次数,不可取;
代码误区3: lq[i-1-hq.length] 会出现下标越界的异常
三元运算符(有三个符号参加运算)
以int x=(a>b?1:2)为例 若a>b为true,则x=1; 否则x=2;
因为int[ ] 在没赋值的情况下,元素的默认值就是0;所以如果i<=hq.length为假的话,可赋值为0;
但这时hq[i]会出现异常; 所以在对hq赋值时建议先用 if 判断 i 的范围
代码优化后如下:
public static void main(String[] arg) {
int[] hq = new int[33];
int[] lq = new int[16];
m1(hq,lq);
}
public static int[] m1(int[] hq,int[]lq) {
int x=hq.length;
int y=lq.length;
int z=x>y?x:y; //取x y中较大的一个即可;
for(int i =0; i<z; i++){
if(i<x){
hq[i] =i;
}
// lq[i-1-hq.length] = (i<=hq.length ? i-hq.length: i-hq.length); 有异常;
//楼主,你此处表达的意思是:不管i是什么情况,lq[i]=i-hq.length;所以会有下面的一行代码;
lq[i]=i-x; //i>=x时,hq已没有元素可以赋值;只有lq,会出现负数;
或许楼主想要的情况是下面这种:
if(i<x){
hq[i]=i;
lq[i]=i;
}else{
lq[i]=i-x; //当i>x时,lq[i]=i-x;
}
}
}
代码误区1: i=1; 数组下标都从0开始,不建议开始值为1,会增加运算量;
代码误区2: i<hq.length+lq.length 会增加循环次数,不可取;
代码误区3: lq[i-1-hq.length] 会出现下标越界的异常
三元运算符(有三个符号参加运算)
以int x=(a>b?1:2)为例 若a>b为true,则x=1; 否则x=2;
因为int[ ] 在没赋值的情况下,元素的默认值就是0;所以如果i<=hq.length为假的话,可赋值为0;
但这时hq[i]会出现异常; 所以在对hq赋值时建议先用 if 判断 i 的范围
代码优化后如下:
public static void main(String[] arg) {
int[] hq = new int[33];
int[] lq = new int[16];
m1(hq,lq);
}
public static int[] m1(int[] hq,int[]lq) {
int x=hq.length;
int y=lq.length;
int z=x>y?x:y; //取x y中较大的一个即可;
for(int i =0; i<z; i++){
if(i<x){
hq[i] =i;
}
// lq[i-1-hq.length] = (i<=hq.length ? i-hq.length: i-hq.length); 有异常;
//楼主,你此处表达的意思是:不管i是什么情况,lq[i]=i-hq.length;所以会有下面的一行代码;
lq[i]=i-x; //i>=x时,hq已没有元素可以赋值;只有lq,会出现负数;
或许楼主想要的情况是下面这种:
if(i<x){
hq[i]=i;
lq[i]=i;
}else{
lq[i]=i-x; //当i>x时,lq[i]=i-x;
}
}
}
展开全部
你在main方法里调用了m1方法后,会自动返回主方法的
关于三元运算符,我举个例子好了:
有int类型的三个变量,a,b,c
a=b>c?1:2
这个表达式的意思就是,如果b>c的值为true,就将1值给a,否则就将2赋给a;
为false时,可以将2这个地方的值写成其他的,比如hq[i-1],hq[i]等等你想要的值
关于三元运算符,我举个例子好了:
有int类型的三个变量,a,b,c
a=b>c?1:2
这个表达式的意思就是,如果b>c的值为true,就将1值给a,否则就将2赋给a;
为false时,可以将2这个地方的值写成其他的,比如hq[i-1],hq[i]等等你想要的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一,静态方法里面缺少return;所以,应该把方法声明改成void
第二,数组是引用,你调用方法后hq,lq的值已经赋值了。不需要使用返回两个数组。
第三,那个三元运算,不可以做你说的那个假就不赋值,解决办法:使用条件语句啊。
第二,数组是引用,你调用方法后hq,lq的值已经赋值了。不需要使用返回两个数组。
第三,那个三元运算,不可以做你说的那个假就不赋值,解决办法:使用条件语句啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i<=hq.length如果是假就不赋值
hq[i-1] = i<=hq.length ? i :hq[i-1] ;
hq[i-1] = i<=hq.length ? i :hq[i-1] ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询