java - 如果它更接近我设置的值,有没有办法打印它?

标签 java

我正在寻找一种按最小到最大值打印多个数据值的方法,我想知道是否有办法做到这一点。就像我想打印输入值,排序条件是如果任何一个输入值接近1,则首先打印它,然后打印其余的值,具体取决于它们与1的接近程度。例如。

ps Arrays.sort(); 会弄乱我正在编写的代码,这就是为什么我要问是否有办法先打印一个值(如果它接近 1 或任何我想要的值)设置条件。

除了任何其他语言之外,给我 Java 语言的答案对我很有帮助。

Scanner sc = new Scanner(System.in);
int[] at = new int[5];

for(int a = 0;a<5;a++){
  System.out.print("Enter number: ");
  at[a]=sc.nextInt();
  System.out.println();
}

for(int b = 0;b<5;b++){
  if(at[b]________){ //what condition should I put here? read from above to know what kind of condition I want. Thanks
  System.out.println(at[b]);
  }
}

如果输入值是 90 30 70 80 50

输出应该是

30 50 70 80 90

最佳答案

更换怎么样

for(int b = 0;b<5;b++){
 if(at[b]________){ //what condition should I put here? read from above to know what kind of condition I want. Thanks
  System.out.println(at[b]);
  }
}

IntStream.of( at ).mapToObj(Offset::new).sorted((a,b) -> { return Math.abs( a.value - center ) - Math.abs( b.value - center );} ).mapToInt( x -> x.value ).forEach( System.out::println);;

你还需要一个像这样的辅助类

public static class Offset {
    public int value = 0;
    Offset( int value ) {
        this.value = value;
    }
}

它将保持原始数组顺序不变,并仍按升序打印它。

请注意,比较器仅考虑距中心值的距离,因此负偏移和正偏移相等。

干杯

关于java - 如果它更接近我设置的值,有没有办法打印它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57666227/

相关文章:

java - 从给定长度生成所有可能的字符串

java - 字符串索引超出范围错误 7

java - Python 和 Java 中正则表达式语法的差异

java - 使用字符串替换删除标点符号在 Java 中不起作用

Java - 使用递归的深度克隆数组;未知类型和未知深度

java - 通过 JSch 在 SFTP 服务器上创建目录时出现 NoSuchAlgorithmException

java - 流多个过滤器内部

java - 如何在 Java 中生成非 UTF-8 字符串/字符以进行测试?

当自定义加载器中引用类时,Java 类过滤器加载不同版本的相同类?

java - 如果我在 web.xml 中有两个匹配请求的 servlet 映射会怎样?