给定一个四个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编程领域的初学者,希望您喜欢我的方法。