黑马程序员技术交流社区

标题: 一段java程序,麻烦帮看看错在哪儿? [打印本页]

作者: you4580    时间: 2014-5-6 19:57
标题: 一段java程序,麻烦帮看看错在哪儿?
我想写个让用户输入10个数,然后求最大值的程序,以下是我写的,编译都无法通过!不知道哪儿错了!我是java初学者,有什么意见尽管说,定虚心接受!谢谢啦!
import java.io.*;
public class Getmax {
public static void main(String args[])
{
shu ab=new shu();
int min=0,max=0,a=0;
System.out.println("请输入10个整数:");
min=ab.shuru();
max=ab.shuru();
if(min>max) { a=min;min=max;max=a;}
for(int i=1;i<=8;i++)
{int b=0;
b=ab.shuru();
if(b<min) min=b;
if(b>max) max=b;
}
}
}
class shu
{
int shuru()
{
try{
int sz=0;
sz=(int)System.in.read();

}catch(IOException e){}
return sz;}
}


作者: 曹冬明    时间: 2014-5-6 20:09
我没运行你的程序,只是简单看了下,你的return语句写到catch里面去了,也就是说必须捕获异常才能返回,那样如果没有异常的话,你的哪个方法不就没有返回值了么

作者: tc4892998    时间: 2014-5-6 21:20
没排版看的好乱...
作者: 大恶魔先森~    时间: 2014-5-6 21:31
  1. import java.util.*;
  2. public class GetMax
  3. {
  4.     public static void main(String args[])
  5.     {
  6.           int arr[]=new int[10];
  7.           int i;
  8.           Scanner reader=new Scanner(System.in);
  9.           System.out.println("请输入10个整数: ");
  10.           int arr[i]=reader.nextInt();
  11.           int max;
  12.           max=arr[0];
  13.           for(i=0;i<10;i++)
  14.           {
  15.                 if(arr[i]>=max)
  16.                  {
  17.                        int temp=max;
  18.                             max=arr[i];
  19.                             arr[i]=temp;
  20.                  }
  21.           }
  22.           System.out.println(max);
  23.          
  24.          
  25.     }
  26. }
复制代码
看看这个吧、、、
作者: gentleman    时间: 2014-5-6 21:34
本帖最后由 gentleman 于 2014-5-7 06:49 编辑

import java.io.*;
public class Getmax {
public static void main(String args[]) //主函数写错了
{
shu ab=new shu();
int min=0,max=0,a=0;
System.out.println("请输入10个整数:");
min=ab.shuru();
max=ab.shuru();
if(min>max) { a=min;min=max;max=a;}
for(int i=1;i<=8;i++)
{int b=0;
b=ab.shuru();
if(b<min) min=b;
if(b>max) max=b;
}
}
}
class shu
{
int shuru()
{
try{
int sz=0;
sz=(int)System.in.read();

}catch(IOException e){}
return sz;} /返放到catch里?
}

作者: 创造命运    时间: 2014-5-6 21:36
你好,我编译了一下你的代码。报异常:找不到符号。你那也是报这个异常吗?下面是我给你改的:

class shu
{
        int shuru()
        {
                int sz=0;
                try{
                sz=(int)System.in.read();
        }catch(IOException e){}
        return sz;}
}

然后我根据你的要求,自己写了一个代码,你可以看一下:
import java.io.*;
public class Test{
        public static void main(String args[]) throws Exception
        {
                int max = 0;
                System.out.println("请输入10个整数:");
                int[] integers = new int[10];
                for (int i = 0; i < integers.length; i++)
                {
                        integers[i] = Integer.parseInt((new BufferedReader(new InputStreamReader(System.in))).readLine());
                        //System.out.println(integers[i]);
                }
                for(int i = 0; i < integers.length; i++)
                {
                        if (max < integers[i])
                        {
                                max = integers[i];
                        }
                }
                System.out.println(max);
        }
}


作者: leo_lzj    时间: 2014-5-6 22:02
编译不通过的原因:在shu类中,sz是定义在try里面,属于局部变量,而后面return sz在int shuru()方法内,try外,故在编译时会显示找不到符号。
解决办法:将sz定义成成员变量,即可编译通过。如下所示:
  1. class shu
  2. {
  3. int shuru()
  4. { int sz=0;
  5. try{

  6. sz=(int)System.in.read();

  7. }catch(IOException e){}
  8. return sz;}
  9. }
复制代码

这样修改只能保证编译通过,但是运行时不会有结果打印。还有就是主函数的写法这样是可以的,没错,数组定义有两种方式嘛。

另外,给楼主几点建议:
1)学会严谨的编程规范,这一点很重要,以后工作是将就团队合作的,针对一个项目往往是需要一个团队合作,如果你写的代码交给被人看,很乱,则会严重影响项目的进度。
2)在解决问题的思路上有待锻炼,楼上已有人给出了一些解决你这个问题的思路,楼主可以发散思维,多思考下更好的解决方案。
3)楼主加油,努力!
作者: czwanglei    时间: 2014-5-7 07:42
当有人给你回复后,请及时把帖子编辑为提问结束,这样版主才可以给你加分。。
作者: stamSuper    时间: 2014-5-7 10:47
楼主,要多看看老师的视频啊。代码不规范,当然可以理解,都是从这一步走过来的
给楼主一点建议,多看看一些优秀程序员的代码,或者java源码。当然必须得打好基础
下面是我写的两种方法,当然还有其他方法。。。
方法一:
  1. public static void getMax() throws NumberFormatException, IOException {
  2.                 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  3.                 //这种写法是我 刚开始学习的时候用的  获取键盘输入的方法
  4.                 /*Scanner scan =new Scanner( System.in);
  5.                 scan.nextInt();*/
  6.                 System.out.println("请输入5个整数:");
  7.                 int [] arr = new int[5];
  8.                 for(int i = 0;i< arr.length ; i++){
  9.                         arr[i] = Integer.parseInt(reader.readLine());///读取输入的一行数据
  10.                         System.out.println("你输入的第"+(i+1)+"个值为:"+arr[i]);
  11.                 }
  12.                 int max = 0, min =0;
  13.                 max =  min =  arr[0];
  14.                 for(int i =1 ; i< arr.length;i++){
  15.                         if(max < arr[i]){///如果最大值比其中任何一个值小,就把这个赋给 max
  16.                                 max = arr[i];
  17.                         }
  18.                         if(min > arr[i]){///如果最小值比其中任何一个值大,就把这个赋给 min
  19.                                 min = arr[i];
  20.                         }
  21.                 }
  22.                 System.out.println("max = "+max + "min =" + min);
  23.         }
复制代码


方法二:
  1. public static void getMax_1() throws NumberFormatException, IOException {
  2.                 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  3.                 System.out.println("请输入5个整数:");
  4.                 int [] arr = new int[5];
  5.                 for(int i = 0;i< arr.length ; i++){
  6.                         arr[i] = Integer.parseInt(reader.readLine());///读取输入的一行数据
  7.                         System.out.println("你输入的第"+(i+1)+"个值为:"+arr[i]);
  8.                 }
  9.                 //对数组进行排序
  10.                 Arrays.sort(arr);
  11.                 System.out.println("max = "+arr[arr.length -1] + "min =" + arr[0]);
  12.         }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2