给定一个四个n位整数的整数,可通过查找至少4个整数的ith位数来生成pin的ith位

我试图将数字的每个ith数与其他ith位数和ith位数bof数的最小值进行比较

import java.util.*;
class EncryptByPin{

    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);
        System.out.print("How many number of digit number you want to print? ");
        int n=sc.nextInt();

        int num1=sc.nextInt();

        num1=NoofDigits(num1,n);

        int num2=sc.nextInt();

        num2=NoofDigits(num2,n);

        int num3=sc.nextInt();

        num3=NoofDigits(num3,n);

        int num4=sc.nextInt();

        num4=NoofDigits(num4,n);
        int pin=Generatepin(num1,num2,num3,num4);


System.out.println("Pin is:"+pin);}

private static int NoofDigits(int num,int l)
{
Scanner sc=new Scanner(System.in);

int a=num;

    int length=String.valueOf(a).length();

while(length>l || length<l)

{   System.out.print("Sorry we cannot proceed reenter the number as per
length");

    a=sc.nextInt();

    length=String.valueOf(num).length();
}

sc.close();

return a;
}

private static int Generatepin(int n1,int n2,int n3,int n4)

{int i=0;int sum=0;int q;

while(n1>0)

{

q=Math.min(n1%10, Math.min(n2%10, Math.min(n3%10, Math.min(n4%10, n1%10))));

sum=(int) (sum+q*Math.pow(10,i));

i++;

n1=n1/10;

n2=n2/10;

n3=n3/10;

n4=n4/10;}

return sum;

}
}


我希望输出是
n = 4

第1号:6373

第二个号码7383

第三号码8362

第四名7383

销6362

错误
线程“主”中的异常java.util.NoSuchElementException

at java.base/java.util.Scanner.throwFor(Scanner.java:937)

at java.base/java.util.Scanner.next(Scanner.java:1594)

at java.base/java.util.Scanner.nextInt(Scanner.java:2258)

at java.base/java.util.Scanner.nextInt(Scanner.java:2212)

at EncryptByPin.main(EncryptByPin.java:9)

最佳答案

我认为您的代码对于问题情况有些过分了。我编写了类似的代码,我认为这更简单。

import java.util.*;
public class SOF {

public static void main(String args[]) {
    Scanner s1 = new Scanner(System.in);
    System.out.println("Enter the value of n (digits)");
    int n = Integer.parseInt(s1.nextLine());
    System.out.println("Enter the numbers");
    String num1 = s1.nextLine();
    String num2 = s1.nextLine();
    String num3 = s1.nextLine();
    String num4 = s1.nextLine();
    System.out.println(FindPin(num1, num2, num3, num4, n));
}

public static String FindPin(String num1, String num2, String num3, String num4, int n) {
    String pin = "";
    for(int i = 0;i<n;i++)
    {
        pin += Integer.toString(Math.min(Math.min(Character.getNumericValue(num1.charAt(i)),Character.getNumericValue(num2.charAt(i))),Math.min(Character.getNumericValue(num3.charAt(i)),Character.getNumericValue(num4.charAt(i)))));
    }

    return pin;

}}


让我解释一下。我向“ FindPin”函数传递了4个数字,该函数返回引脚值。for循环扫描每个数字的iTH数字,并将它们发送给“ Math.min”函数,该函数返回最少的数字。该数字已附加类似地,循环以这样的n位数字运行并返回pin值。

我也是Java编程领域的初学者,希望您喜欢我的方法。

07-26 07:06