【问题标题】:Supplier INT returning the value that I enter + Predicate that tells if the number I enter is prime or not供应商 INT 返回我输入的值 + 判断我输入的数字是否为素数的谓词
【发布时间】:2021-03-31 15:25:36
【问题描述】:

我有下一个任务:

使用块 lambda 表达式编写一个返回屏幕读取数字的类型的供应商

编写一个谓词,告诉我们输入的数字是否是质数,并带有一个带有 for 循环的块表达式。将其应用于供应商的结果

必须返回:

每个屏幕写入一个整数 24 供应商 24 生成的数字不是素数

每个屏幕写一个整数 23 由supplierScreen 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 循环对我来说效果不佳,因为它总是返回它不是素数

  • 它还返回布道的“真”,它不应该返回任何东西。

我很感激能得到任何帮助。

【问题讨论】:

    标签: java primes predicate supplier


    【解决方案1】:
    1. numeroPorPantalla 的第二次调用在

    System.out.println("The supplier number "+numeroPorPantalla.get()+"is prime");

    您可以将n 写入控制台,而不是调用供应商两次

    1. if (n % 1 == 0) - int 数除以 1 的余数始终为 0

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 1970-01-01
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 2014-08-03
      • 2013-07-25
      相关资源
      最近更新 更多