supplier int返回我输入的值+ predicate ,告知我输入的数字是否为素数

q1qsirdb  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(354)

我有下一个任务:
编写一个返回屏幕读取的带有块lambda表达式的数字的类型的供应商
写一个 predicate ,告诉我们输入的数字是否是一个带for循环的块表达式的素数。将其应用于供应商的结果。
必须返回:
每个屏幕24写一个整数供应商24生成的数字不是素数

为每个屏幕23写入一个整数。供应商屏幕23生成的数字为primo
取决于输入的数字是否为素数。
我的代码如下:

import java.util.Scanner;
import java.util.function.Supplier;
import java.util.function.Predicate;

public class Ejercicio4 {

    public static void main(String[] args) {

    Scanner teclado = new Scanner(System.in);

    Supplier <Integer> numeroPorPantalla = () ->{
    int n;   
    System.out.println("Escriba un número entero por pantalla");
    n=teclado.nextInt();
    return n;

    };

   Predicate<Integer> esPrimo = (n) -> {
    int a = 0;
    int i;

    for (i=1; i<= n; i++) {
        if (n % 1 == 0) {
            a++;
        }
    }
       if (a != 2) {
           System.out.println("The supplier number "+numeroPorPantalla.get()+" is not prime");
       } else {
           System.out.println("The supplier number "+numeroPorPantalla.get()+" is prime");
       }
        return true ;
 };

     System.out.println("");
     System.out.print(esPrimo.test(numeroPorPantalla.get()));

    }

    }

我跑步时遇到的问题是:
它要求我输入值的2倍,而它应该只有1倍。
for循环对我来说不是很好,因为它总是返回它不是素数
它还返回了“真实”的说教,它不应该返回任何东西。
我很感激能得到的任何帮助。

jv2fixgn

jv2fixgn1#

第二次调用Numeroporpantala是在 System.out.println("The supplier number "+numeroPorPantalla.get()+"is prime"); 你可以写 n 控制台,而不是调用供应商两次 if (n % 1 == 0) -整数除以一的余数总是0

相关问题