用户随机输入一组整数求出最大值

1.程序要求:

用户随机输入一组整数,求出这组数当中的最大值。当用户出现非法输入的时候,要能够检测出来。用户输入的数字的个数不定,几个都可以。

2.程序设计思想:

要想实现输入的数字个数不定,可以采用字符串来实现。即把用户输入的字符存放到一个字符串里面,因为用户在输入数字的时候,用空格隔开,我们就可以通过空格来获取各个数字。在判断每个数字是否符合要求,如果符合,就把它转化为数字然后存储到一个数组当中去,如果不符合,就提示用户有非法输入。

3.源代码:

package MathTest1;
import java.util.Scanner;
import java.util.ArrayList;
class FindIntMax {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        Major1 m = new Major1();
        m.Input();
        m.out();
        m.InputToIntArr();
        
    }    
}

class Major1
{
    private String inputStr;//获取用户的输入表达式
    public void Input()
    {
        System.out.println("输入一串整数");
        Scanner sc = new Scanner(System.in);
        inputStr = sc.nextLine();
    }
    public void out()
    {
        System.out.println(inputStr + "长度" +inputStr.length());
    }
    //检查输入的字符串是否符合程序要求 返回字符串中数字的个数
    public int checkInputStr()
    {
        //记录数字字符的个数
        int count = 0;
        //记录每个字串开始时的位置
        int index = 0;
        
        
        
        while(index < inputStr.length())
        {
            //定位下次开始获取子串的位置
            while(String.valueOf(inputStr.charAt(index)).equals(" "))
            {
                index++;
                if(index >= inputStr.length())
                {
                    break;
                }
            }
            
            String str = "";
            //得到两个空格之间的子串
            while(!(String.valueOf(inputStr.charAt(index)).equals(" ")))
            {
                str = str+String.valueOf(inputStr.charAt(index));
                index++;
                if(index >= inputStr.length())
                {
                    break;
                }
            }
            if(checkSubStr(str))
            {
                count++;
            }
            else
            {
                return -1;
            }
            
            
        }
        return count;
    }
    
    //检查子串是否符合要求
    public boolean checkSubStr(String str1)
    {
        boolean f = true;
        
        //处理单独的-
        if(str1.equals("-"))
        {
            f = false;
        }
        String substr = String.valueOf(str1.charAt(0));
        //负数的第一个字符可能是-
        if(substr.equals("-")||substr.equals("1")||substr.equals("2")||substr.equals("3")||
            substr.equals("4")||substr.equals("5")||substr.equals("6")||substr.equals("7")||
            substr.equals("8")||substr.equals("9")||substr.equals("0"))
        {
            for(int j = 1;j < str1.length();j++)
            {
                substr = String.valueOf(str1.charAt(j));
                if(!(substr.equals("1")||substr.equals("2")||substr.equals("3")||
                        substr.equals("4")||substr.equals("5")||substr.equals("6")||
                        substr.equals("7")||
                        substr.equals("8")||substr.equals("9")||substr.equals("0")))
                {
                    f = false;
                    break;
                }
            }
            
        }
        else
        {
            f = false;
        }
        return f;
    }
    
    //
    public int findMax(int[] list)
    {
        int maxNum = list[0];
        for(int i = 0;i < list.length;i++)
        {
            if(list[i] > maxNum)
            {
                maxNum = list[i];
            }
        }
        return maxNum;
    }
    
    public void InputToIntArr()
    {
        if(checkInputStr() == -1)
        {
            System.out.println("您输入了非数字字符!");
        }
        else
        {
            int k = checkInputStr();
            int[] list = new int[k];
            int index = 0;
            int count = 0;
            
            
            while(index < inputStr.length())
            {
                //定位下次开始获取子串的位置
                while(String.valueOf(inputStr.charAt(index)).equals(" "))
                {
                    index++;
                    if(index >= inputStr.length())
                    {
                        break;
                    }
                }
                
                String str = "";
                //得到两个空格之间的子串
                while(!String.valueOf(inputStr.charAt(index)).equals(" "))
                {
                    str = str+String.valueOf(inputStr.charAt(index));
                    index++;
                    if(index >= inputStr.length())
                    {
                        break;
                    }
                }
                
                //子串已经全部是数字串可以赋值
                list[count] = Integer.parseInt(str);
                count++;

                
            }
            System.out.println(findMax(list));
        }
    }
}

    

4.测试用例:

5个正整数

5个负整数

10个正整数

7个负整数

出现小数

出现非数字字符

原文地址:https://www.cnblogs.com/1102whw/p/5301955.html