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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随机生成一组限定最大和最小值的整数,且它们的和等于指定值,可以按照以下步骤进行: 1. 确定需要生成的整数的个数,假设为`n`。 2. 确定最小值`min`和最大值`max`。 3. 确定指定的和值`sum`。 4. 生成一个长度为`n`的随机整数数组,每个元素的取值范围为在`min`和`max`之间。 5. 计算随机数组的和,如果和等于指定的和值`sum`,则返回该随机数组;否则返回第4步。 6. 重复第4步和第5步,直到生成满足条件的随机数组。 下面是一个示例代码实现: ```javascript function generateRandomArrayWithSum(min, max, sum, n) { let randomArray = []; for (let i = 0; i < n; i++) { randomArray[i] = Math.floor(Math.random() * (max - min + 1)) + min; } while (randomArray.reduce((a, b) => a + b, 0) !== sum) { randomArray = randomArray.map(() => Math.floor(Math.random() * (max - min + 1)) + min); } return randomArray; } // 示例调用 const min = 1; const max = 10; const sum = 20; const n = 5; const randomArray = generateRandomArrayWithSum(min, max, sum, n); console.log(randomArray); ``` 在上述示例中,我们定义了最小值`min`和最大值`max`分别为1和10,指定的和值`sum`为20,需要生成的整数个数`n`为5。通过调用`generateRandomArrayWithSum`函数,我们可以得到一个长度为5的整数数组,其中元素的取值范围在1和10之间,并且它们的和等于20。最后,将生成的随机数组打印到控制台上。 请注意,由于是随机生成的,每次运行结果可能不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值