gpt4 book ai didi

java - 求4个元素中第i位的最小值

转载 作者:太空宇宙 更新时间:2023-11-04 09:19:07 24 4
gpt4 key购买 nike

给定一个 4 位 n 位整数,通过查找 4 个整数的第 i 位中的最小值来生成引脚的第 i 位

我尝试取数字的每个第i位数字,并与数字的其他第i位数字和第i位数字的最小值进行比较

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

第一个号码:6373

第二号7383

第三个号码8362

第四号7383

引脚 6362

错误线程“main”中的异常 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;

}}

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

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

关于java - 求4个元素中第i位的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com