标题:java从键盘输入任意8个整数正数,输入<=0的数,提示“请输入正数”,计算8个 ...
只看楼主
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
结帖率:88.89%
已结贴  问题点数:50 回复次数:15 
java从键盘输入任意8个整数正数,输入<=0的数,提示“请输入正数”,计算8个数和输出它们的总和,计算8个数平均值,最大值和最小值。
从键盘输入任意8个整数正数,
1,输入<=0的数,提示“请输入正数”。
2,计算8个数和输出它们的总和。
3,计算8个数平均值,最大值和最小值。

就是那个判断是否为负,那一块写不好了,很纠结,求解答,谢谢!
程序代码:
import java.util.Scanner;
public class xfor {
    
    public xfor() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in); 
        int []num=new int [9];
        int i,sum=0,max=0,min=0;
        double av=0;
        int t;
       
         System.out.println("请输入八个正整数:");
       
        for(i=0;i<8;i++)
         {   
            t=scan.nextInt();
            if(t>0)
             {
                num[i]=t;
                max=min=num[0]; 
                if(num[i]>max) max=num[i];
                   if(num[i]<min) min=num[i];
                   sum+=num[i];
                   av=(double)sum/8;
             }
            else
                {
                System.out.println("请输入正数:");              
                i=0;
                break;
                }
            
      
               
         }
         
            for(i=0;i<8;i++){
                 System.out.print(num[i]+" "); 
       
                }
            System.out.println("");
            System.out.println("sum="+sum);
            System.out.println("average="+av);
            System.out.println("max="+max);
            System.out.println("min="+min); 
                
                 
                 
         }
             
         }

搜索更多相关主题的帖子: 输入 正数 System num out 
2018-03-15 12:58
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:13 
程序代码:
package com.xiaoa.demo;

import java.util.Scanner;

public class AFor {

    public static void main(String[] args) {
        // 获取长度8的数组
        int[] arr = getArr();

        // 取数组最大值
        int max = getMax(arr);
        // 获取最小值
        int min = getMin(arr);
        // 获取平均值
        int avg = getAvg(arr);
        // 获取和
        int sum = genSum(arr);

        System.out.println("sum=" + sum);
        System.out.println("average=" + avg);
        System.out.println("max=" + max);
        System.out.println("min=" + min);

    }

    public static int genSum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    public static int getAvg(int[] arr) {
        int sum = genSum(arr);
        int length = arr.length;
        return sum / length;
    }

    public static int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        return min;
    }

    public static int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        return max;
    }

    public static int[] getArr() {
        int[] arr = new int[8];// 定义长度为8的数组存放数据
        // 用循环给数组元素赋值
        for (int i = 0; i < arr.length; i++) {
            for (;;) {
                System.out.println("请输入第" + (i+1) + "个数字(大于等于0):");
                Scanner sc = new Scanner(System.in);
                int num = sc.nextInt();
                // 判断数字是否满足条件
                if (num > 0) {
                    arr[i] = num;
                } else {
                    // 不满足条件
                    System.out.println("次数不满足条件,重新输入");
                    i--;
                    break;
                }
                break;
            }
        }
        return arr;
    }

}

假如人生没有梦想,和咸鱼有什么区别!
2018-03-15 15:28
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:0 
程序代码:
package com.xiaoa.demo;

import java.util.Scanner;

public class AFor {

    public static void main(String[] args) {
        // 获取长度8的数组
        int[] arr = getArr();

        // 取数组最大值
        int max = getMax(arr);
        // 获取最小值
        int min = getMin(arr);
        // 获取平均值
        int avg = getAvg(arr);
        // 获取和
        int sum = genSum(arr);

        System.out.println("sum=" + sum);
        System.out.println("average=" + avg);
        System.out.println("max=" + max);
        System.out.println("min=" + min);

    }

    public static int genSum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    public static int getAvg(int[] arr) {
        int sum = genSum(arr);
        int length = arr.length;
        return sum / length;
    }

    public static int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        return min;
    }

    public static int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        return max;
    }

    public static int[] getArr() {
        Scanner sc = new Scanner(System.in);
        try {
            int[] arr = new int[8];// 定义长度为8的数组存放数据
            // 用循环给数组元素赋值
            for (int i = 0; i < arr.length; i++) {
                for (;;) {
                    System.out.println("请输入第" + (i + 1) + "个数字(大于等于0):");
                    int num = sc.nextInt();
                    // 判断数字是否满足条件
                    if (num > 0) {
                        arr[i] = num;
                    } else {
                        // 不满足条件
                        System.out.println("此数不满足条件,重新输入");
                        i--;
                        break;
                    }
                    break;
                }
            }
            return arr;
        } finally {
            //关闭资源
            sc.close();
        }
    }

}
忘记关闭资源,补上!

假如人生没有梦想,和咸鱼有什么区别!
2018-03-15 15:34
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
得分:0 
回复 3楼 疯狂的小a
非常谢谢你的解答!
这是我做了更改后的代码
程序代码:
import java.util.Scanner;
public class xfor {
    
    public xfor() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in);
        int []num=new int [8];
        int i,sum=0,max=0,min=0;
        double av=0;
        int t;
        System.out.println("请输入八个正整数:");
       
        for(i=0;i<num.length;i++)
         {   
            t=scan.nextInt();
            num[i]=t;
         }
            for(i=0;i<num.length;i++){ 
            if(num[i]<0)
             {
                System.out.println("第"+(i+1)+"个数是负数请更正");
                num[i]=scan.nextInt();  
             }
            }
            for(i=0;i<num.length;i++)
            {
                 System.out.print(num[i]+" ");
                 max=min=num[0]; 
                 if(num[i]>max) max=num[i];
                 if(num[i]<min) min=num[i];
                 sum+=num[i];
                 av=(double)sum/num.length;
            }scan.close();
            System.out.println("");
            System.out.println("sum="+sum);
            System.out.println("average="+av);
            System.out.println("max="+max);
            System.out.println("min="+min);             

 }
             
}
             




永不言败!never say die!
2018-03-15 17:12
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:0 
回复 4楼 a1024204390
类名不规范。

假如人生没有梦想,和咸鱼有什么区别!
2018-03-15 17:36
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:0 
回复 4楼 a1024204390
要是更正的时候再输入负数,岂不是GG了

假如人生没有梦想,和咸鱼有什么区别!
2018-03-15 18:23
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:0 
程序代码:
package com.xiaoa.demo;

import java.util.Arrays;
import java.util.Scanner;

public class AFor {

    public static void main(String[] args) {
        // 获取长度8的数组
        int[] arr = getArr();

        // 取数组最大值
        int max = getMax(arr);
        // 获取最小值
        int min = getMin(arr);
        // 获取平均值
        int avg = getAvg(arr);
        // 获取和
        int sum = genSum(arr);

        System.out.println("sum=" + sum);
        System.out.println("average=" + avg);
        System.out.println("max=" + max);
        System.out.println("min=" + min);

    }

    public static int genSum(int[] arr) {
        Arrays.sort(arr);
        return ((arr[0]+arr[arr.length-1])*arr.length)/2;
    }

    public static int getAvg(int[] arr) {
        Arrays.sort(arr);
        return ((arr[0]+arr[arr.length-1])*arr.length)/2/arr.length;
    }

    public static int getMin(int[] arr) {
        Arrays.sort(arr);
        return arr[0];
    }

    public static int getMax(int[] arr) {
        Arrays.sort(arr);
        return arr[arr.length-1];
    }

    public static int[] getArr() {
        Scanner sc = new Scanner(System.in);
        try {
            int[] arr = new int[8];// 定义长度为8的数组存放数据
            // 用循环给数组元素赋值
            for (int i = 0; i < arr.length; i++) {
                for (;;) {
                    System.out.print("请输入第" + (i + 1) + "个数字(大于等于0):");
                    int num = sc.nextInt();
                    // 判断数字是否满足条件
                    if (num > 0) {
                        arr[i] = num;
                    } else {
                        // 不满足条件
                        System.out.println("此数不满足条件,重新输入");
                        i--;
                        break;
                    }
                    break;
                }
            }
            return arr;
        } finally {
            //关闭资源
            sc.close();
        }
    }

}

假如人生没有梦想,和咸鱼有什么区别!
2018-03-15 18:32
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:13 
1.我输入字符报InputMismatchException。
2.存到数组再遍历查找最值和排序之后取最值,还不如在输入过程中不断刷新最值。

个人看法

剑栈风樯各苦辛,别时冰雪到时春
2018-03-15 23:01
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:0 
回复 8楼 林月儿
程序代码:
package com.xiaoa.demo;

import java.util.Arrays;
import java.util.Scanner;

public class AFor {

    public static void main(String[] args) {
        // 获取长度8的数组
        int[] arr = getArr();
        if(null==arr) {
            System.exit(0);
        }

        // 取数组最大值
        int max = getMax(arr);
        // 获取最小值
        int min = getMin(arr);
        // 获取平均值
        int avg = getAvg(arr);
        // 获取和
        int sum = genSum(arr);

        System.out.println("sum=" + sum);
        System.out.println("average=" + avg);
        System.out.println("max=" + max);
        System.out.println("min=" + min);

    }

    public static int genSum(int[] arr) {
        return ((arr[0]+arr[arr.length-1])*arr.length)/2;
    }

    public static int getAvg(int[] arr) {
        return ((arr[0]+arr[arr.length-1])*arr.length)/2/arr.length;
    }

    public static int getMin(int[] arr) {
        return arr[0];
    }

    public static int getMax(int[] arr) {
        return arr[arr.length-1];
    }

    public static int[] getArr() {
        Scanner sc = new Scanner(System.in);
        try {
            int[] arr = new int[8];// 定义长度为8的数组存放数据
            // 用循环给数组元素赋值
            for (int i = 0; i < arr.length; i++) {
                for (;;) {
                    System.out.print("请输入第" + (i + 1) + "个数字(大于等于0):");
                    int num = sc.nextInt();
                    // 判断数字是否满足条件
                    if (num > 0) {
                        arr[0] = num;
                        Arrays.sort(arr);
                    } else {
                        // 不满足条件
                        System.out.println("此数不满足条件,重新输入");
                        i--;
                        break;
                    }
                    break;
                }
            }
            return arr;
        } catch (Exception e){
            System.out.println("你的智商太低,系统拒绝你继续输入!");
            return null;
        }finally {
            //关闭资源
            sc.close();
        }
    }

}
你看这样可以不可以

[此贴子已经被作者于2018-3-15 23:39编辑过]


假如人生没有梦想,和咸鱼有什么区别!
2018-03-15 23:32
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
挺好的,我也来一段吧
程序代码:
package com.huawei.test0316;

import java.text.DecimalFormat;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int max = 0;
        int min = 0;
        int sum = 0;
        int cur;
        String inputEle = null;
        for(int i = 0; i < 8; i++) {
            System.out.printf("请输入第%d个元素:", i + 1);
            inputEle = scan.next();
            try {
                cur = Integer.parseInt(inputEle);
                if(cur <= 0) {
                    System.out.println("请输入正数");
                    i--;
                    continue;
                }
                if(i == 0) {
                    max = min = cur;
                }else{
                    if(max < cur){
                        max = cur;
                    }
                    if(min > cur){
                        min = cur;
                    }
                }
                sum += cur;
            } catch (NumberFormatException e) {
                System.out.println("error:"+e.getMessage());
                i--;
            }
        }
        scan.close();
        DecimalFormat dm = new DecimalFormat("#.00");
        System.out.printf("sum:%d\navg:%s\nmax:%d\nmin:%d\n", 
                sum, dm.format(sum*1.0/8), max, min);
    }
}

剑栈风樯各苦辛,别时冰雪到时春
2018-03-16 00:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485288-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.331805 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved