黑马程序员技术交流社区
标题:
为什么无法解析
[打印本页]
作者:
邱成
时间:
2012-7-31 12:51
标题:
为什么无法解析
package homework;
import java.util.*;
public class homework1 {
int [] nums=new int[10];
int max;
int min;
public void maxMin(int [] nums){
int max=nums[0];
int min=nums[0];
for(int i=0;i<nu***ength;i++){
nums[i]=((int)Math.random()*1000);
System.out.println(nums[i]);
if(nums[i]>max){
max=nums[i];
}else if(nums[i]<min){
min=nums[i];
}
}
System.out.print("最大值是:"+max);
System.out.print("最小值是:"+min);
}
}
------------------------------------------------------------------
package homework; public class Testhomework1 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
homework1 hw=new homework1();
hw.maxMin(nums);
}
}
调用方法里的 hw.maxMin(nums); 中nums为什么无法解析!?
作者:
王志明
时间:
2012-7-31 13:51
分析了下代码,小问题挺多的,我已经改好了,具体的细节看代码中的注释
package test4;
public class Test4 {
int[] nums = new int[10];
int max;
int min;
public void maxMin(int[] nums) {
// int 型的数组元素初始值是0,你后面又在循环中对其元素赋值,这里的赋值其实无意义了,只是为了编译通过
int max = 0;
int min = 0;
for (int i = 0; i < nums.length; i++) {
// 你之前的写法导致每次的随机数都一样,要先算出随机数,最后再强转
nums[i] = ((int) (Math.random() * 1000 + 1));
System.out.println(nums[i]);
if (i == 0) {
// 要放到这里
max = nums[0];
min = nums[0];
}
if (nums[i] > max) {
max = nums[i];
}
// 还有这里,求最大和最小值是两个部分,分开判断,不能用else if将两个部分连起来,那样就错了
if (nums[i] < min) {
min = nums[i];
}
}
System.out.print("最大值是:" + max);
System.out.print("最小值是:" + min);
}
public static void main(String[] args) {
Test4 t = new Test4();
t.maxMin(t.nums);
}
}
复制代码
作者:
李东升
时间:
2012-7-31 14:27
本帖最后由 李东升 于 2012-7-31 14:31 编辑
你代码最大的我错误在于生成随机数代码的(int)放错位置,这样给int数组赋值失败。而且,你传入的是一个空数组,那么数组所有的值都是0,那么最后最小是也就是0,不管你数组里面有没有0.至于if else的判断没错。
说说你写这个方法的作用,这个作用是什么呢?传递一个数组进去,输出最大值和最小值?那你为什么要在方法内部才给数组赋值,还有一个方法要尽量简单,单一。最好的办法是传入一个有值的数组,然后返回一个最大值一个最小值,但是这样必须返回一个数组。而且,方法里面尽量不要输出语句。
public int[] maxMin(int [] nums){
int max=nums[0];
int min=nums[0];
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
if(nums[i]>max){
max=nums[i];
}else if(nums[i]<min){
min=nums[i];
}
}
System.out.print("最大值是:"+max);
System.out.println("最小值是:"+min);//这里的三个输出语句最好去掉,这里是为了对比输出结果是否正确。
//也可以在main方法中遍历输出数组
return new int[]{max,min};
}
public static void main(String[] args) {
int [] nums=new int[10];
for(int i=0;i<nums.length;i++){
nums[i]=(int)(Math.random()*1000);}
Lt l=new Lt();
int[] a=l.maxMin(nums);
System.out.println(a[0]+" "+a[1]);
}
复制代码
作者:
纪艺松
时间:
2012-7-31 14:41
希望对你有帮助。。。
QQ截图20120731143858.jpg
(70.34 KB, 下载次数: 58)
下载附件
2012-7-31 14:41 上传
作者:
王峰
时间:
2012-7-31 17:42
public static void main(String[] args) {
// TODO Auto-generated method stub
homework1 hw=new homework1();
hw.maxMin(nums);
}
,你这里给maxMin方法传的参数nums在主类中没有定义,也不是全局变量,看来你应用的是类homework1中的变量,所以这里的参数,应该写成maxMin(hw.nums);
作者:
hello world
时间:
2012-7-31 20:39
public class MaxAndMin
{
public static void main(String[] args)
{
int[] arr = new int[10];
for(int i = 0; i < arr.length; i++)
{
arr[i] = (int)(Math.random() * 1000);
System.out.print(arr[i]+" ");
}
getMaxAndMin(arr);
}
public static void getMaxAndMin(int[] arr)
{
int max = arr[0];
int min = arr[0];
for(int i = 1; i < arr.length; i++)
{
if(arr[i] > max)
{
max = arr[i];
}
if(arr[i] < min)
{
min = arr[i];
}
}
System.out.println("max="+max+" ,min="+min);
}
}
//希望能帮到你吧,个人写了个,应该和你的一样,你可以对着找找看你的错误在哪了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2