java中输入一组数字,如何固定输入数字个数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中输入一组数字,如何固定输入数字个数?相关的知识,希望对你有一定的参考价值。

import java.util.Scanner;

public class ScannerTest
public static void main(String[] args) 
System.out.println("请输入你的四位会员号码");
Scanner input = new Scanner(System.in);
String num ;
while(true)
num = input.nextLine();//nextLine是读取一行的意思
String reg = "^[0-9]\\\\d*$";//正则表达式,匹配0~9的数字
if(!num.matches(reg))
System.out.println("会员号要求全是数字,请重新输入");
continue;//包含非数字符号.就直接进行下次循环.不检测是否是4位数字了

if(num.length()==4)
System.out.println("会员号输入成功:"+num);
break;//满足要求,跳出循环
else
System.out.println("会员号位数限制4位,请重新输入");


input.close();//输入资源用完要关闭

运行后,进行检查测试

请输入你的四位会员号码
001
会员号位数限制4位,请重新输入
0a01
会员号要求全是数字,请重新输入
0001
会员号输入成功:0001

参考技术A 加if判定啊,或者用正则表达式限制追问

我的意思是,比方说0123或者0001这样的也可以,但如果输入12345或者00001这样的数字就会有提示,要求重新输入。并且整个过程是要循环的。

追答

就是先判断输入的位数 符合要求就进 if 否则就else提示重新输入,外边套上while循环
你先研究研究,不行我直接给你源码

追问

麻烦你还是给我源代码吧,谢谢!

最后一个问题,比如输入0001,让他最后控制台输出的也是0001.

如何从输入的一组数字中获取最大值和最小值?

【中文标题】如何从输入的一组数字中获取最大值和最小值?【英文标题】:How do I get the max and min values from a set of numbers entered? 【发布时间】:2013-11-09 09:20:18 【问题描述】:

以下是我目前所拥有的:

我不知道如何排除 0 作为最小数字。作业要求 0 作为退出编号,因此我需要在 min 字符串中显示除 0 之外的最小数字。有什么想法吗?

int min, max;

Scanner s = new Scanner(System.in);
System.out.print("Enter a Value: ");
int val = s.nextInt();
min = max = val;

while (val != 0) 
  System.out.print("Enter a Value: ");
  val = s.nextInt();
  if (val < min) 
      min = val;
  
  if (val > max) 
     max = val;
  
;
System.out.println("Min: " + min);
System.out.println("Max: " + max);

【问题讨论】:

Math.minMath.max 是你要找的东西 简单的有两个变量,一个叫min,一个叫max,然后检查输入的变量是小于min还是大于max。如果是,请重置变量。 他们会进入 for 还是 if。还是完全在循环之外? 请使用您的代码,实验,尝试。这就是你学习的方式。 @ Hovercraft Full Of Eels 好吧,这很有道理。我试试看,谢谢。 【参考方案1】:

您只需要像这样跟踪最大值:

int maxValue = 0;

然后,当您遍历数字时,如果 maxValue 大于 maxValue,则继续将 maxValue 设置为下一个值:

if (value > maxValue) 
    maxValue = value;

以相反的方向重复 minValue。

【讨论】:

最好轻推他,让他创建代码。否则你会欺骗他,让他失去一个体面的学习体验。 在这种情况下,我仍然会使用 Math.max/Math.min(“额外”作业不会打扰我),但这可能不是课程所要寻找的。​​span> @HovercraftFullOfEels 我认为我们对这个很安全......不要认为他会忘记这一点,不管他是怎么做到的。此外,他还必须为 minValue 编写代码。 =) 我将如何分配 minValue,我不知道分配给哪个数字。用户可以输入 99999999999999999999999999999 这可能是最小值,但我不想在我的代码中有 99999999999999999999999999999。也许 Math 类会更好用。 @user2934299 见Integer.MIN_VALUE(或任何合适的类型)。但是请注意,最负的 (?) 浮点值(不包括无穷大)实际上是-Double.MAX_VALUE【参考方案2】:

这是一个可能的解决方案:

public class NumInput 
  public static void main(String [] args) 
    int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;

    Scanner s = new Scanner(System.in);
    while (true) 
      System.out.print("Enter a Value: ");
      int val = s.nextInt();

      if (val == 0) 
          break;
      
      if (val < min) 
          min = val;
      
      if (val > max) 
         max = val;
      
    

    System.out.println("min: " + min);
    System.out.println("max: " + max);
  

(不确定使用 int 还是双重思考)

【讨论】:

谢谢,现在说得通了。不敢相信我自己无法解决这个问题。一个问题,对于第一个解决方案: Integer.MAX_INT;整数.MIN_INT;这些是决赛吗?或某种java方法?对不起,如果这是一个愚蠢的问题,但我对这一切都很陌生。 @user2934299 它们是常量。它们分别代表int 可以存储的最大和最小数字。【参考方案3】:
//for excluding zero
public class SmallestInt 

    public static void main(String[] args) 

        Scanner input= new Scanner(System.in);

        System.out.println("enter number");
        int val=input.nextInt();
        int min=val;

        //String notNull;

        while(input.hasNextInt()==true)
        
            val=input.nextInt();
            if(val<min)
                min=val;
        
        System.out.println("min is: "+min);
    

【讨论】:

【参考方案4】:

这就是我所做的,它可以尝试并尝试使用它。它计算总、平均、最小值和最大值。

public static void main(String[] args) 
   int[] score= 56,90,89,99,59,67;
   double avg;
   int sum=0;
   int maxValue=0;
   int minValue=100;

   for(int i=0;i<6;i++)
       sum=sum+score[i];
   if(score[i]<minValue)
    minValue=score[i];
   
   if(score[i]>maxValue)
    maxValue=score[i];
   
   
   avg=sum/6.0;
System.out.print("Max: "+maxValue+"," +" Min: "+minValue+","+" Avarage: "+avg+","+" Sum: "+sum);

 

【讨论】:

【参考方案5】:

更好

public class Main 

    public static void main(String[] args) 

        System.out.print("Enter numbers: ");
        Scanner input = new Scanner(System.in);

        double max = Double.MIN_VALUE;
        double min = Double.MAX_VALUE;

        while (true) 

            if ( !input.hasNextDouble())
                break;

            Double num = input.nextDouble();

            min = Math.min(min, num);
            max = Math.max(max, num);

        
        System.out.println("Max is: " + max);
        System.out.println("Min is: " + min);
    

【讨论】:

【参考方案6】:

这里你需要跳过 int 0 如下:

val = s.nextInt();
  if ((val < min) && (val!=0)) 
      min = val;
  

【讨论】:

【参考方案7】:
System.out.print("Enter a Value: ");
val = s.nextInt();

这一行放在最后。整个代码如下:-

public static void main(String[] args)
    int min, max;

    Scanner s = new Scanner(System.in);
    System.out.print("Enter a Value: ");
    int val = s.nextInt();
    min = max = val;

    while (val != 0) 
        if (val < min) 
            min = val;
        
        if (val > max) 
            max = val;
        
        System.out.print("Enter a Value: ");
        val = s.nextInt();

    
    System.out.println("Min: " + min);
    System.out.println("Max: " + max);

【讨论】:

【参考方案8】:

我尝试通过处理用户输入异常来优化解决方案。

public class Solution 
    private static Integer TERMINATION_VALUE = 0;
    public static void main(String[] args) 
        Integer value = null;
        Integer minimum = Integer.MAX_VALUE;
        Integer maximum = Integer.MIN_VALUE;
        Scanner scanner = new Scanner(System.in);
        while (value != TERMINATION_VALUE) 
            Boolean inputValid = Boolean.TRUE;
            try 
                System.out.print("Enter a value: ");
                value = scanner.nextInt();
             catch (InputMismatchException e) 
                System.out.println("Value must be greater or equal to " + Integer.MIN_VALUE + " and less or equals to " + Integer.MAX_VALUE );
                inputValid = Boolean.FALSE;
                scanner.next();
            
            if(Boolean.TRUE.equals(inputValid))
                minimum = Math.min(minimum, value);
                maximum = Math.max(maximum, value);
            
        
        if(TERMINATION_VALUE.equals(minimum) || TERMINATION_VALUE.equals(maximum))
            System.out.println("There is not any valid input.");
         else
            System.out.println("Minimum: " + minimum);
            System.out.println("Maximum: " + maximum);
        
        scanner.close();
    


【讨论】:

以上是关于java中输入一组数字,如何固定输入数字个数?的主要内容,如果未能解决你的问题,请参考以下文章

一个java问题,随机输入一组数字,从小到大排列,然后表示它是第几次输入的数字(问题在这),真心求助。

在c语言中怎么输入一组数字存储在数组里

java如何比较输入的两个数??

C语言中,以命令行输入一组数字,并以从小到大排序输出!

请教EXCEL2010里求一组数值和等于固定值的方法!

用python3,用户输入的一组数字求和:样例输入:1,3,5,7,9;样例输出:25?