小编Yas*_*jaj的帖子

使用 Seive of Eratosthens 寻找第 n 个素数

我正在使用埃拉托色尼的 Seive 来计算第 1,000,001 个素数,但是,我无法计算使用 Seive 的上限。我的功能:

public static void Seive(int num){
    BitSet primes = new BitSet();

    for(int i=2; i<=num; i++){
        if(!primes.get(i)){
            for(int j=i+i; j<=num; j+=i){
                primes.set(j);
            }
        }
    }

    for(int i=2; i<=num; i++){
        if(!primes.get(i))
            System.out.print(i + " ");
    }       

}
Run Code Online (Sandbox Code Playgroud)

计算从 2 到 num 的素数,但如果我不知道范围但有兴趣找到第 n 个数字怎么办。

java algorithm math primes

3
推荐指数
1
解决办法
484
查看次数

Java和C#之间双原语精度的差异

这不回答这个问题.

我在Java和C#中运行了相同的代码,它给出了两个不同的结果.

为什么?由于两种语言的双打具有完全相同的规格:

double是一种表示Java中64位IEEE 754浮点数的类型

double是一种表示C#中IEEE 754格式的64位双精度数的类型 .


Java的

double a = Math.pow(Math.sin(3), 2);
double b = Math.pow(Math.cos(3), 2);
System.out.println(a);   // 0.01991485667481699
System.out.println(b);   // 0.9800851433251829
System.out.println(a+b); // 0.9999999999999999
Run Code Online (Sandbox Code Playgroud)

C#

double a = Math.Pow(Math.Sin(3), 2);
double b = Math.Pow(Math.Cos(3), 2);
Console.WriteLine(a);   // 0.019914856674817
Console.WriteLine(b);   // 0.980085143325183
Console.WriteLine(a+b); // 1
Run Code Online (Sandbox Code Playgroud)

c# java precision double

3
推荐指数
1
解决办法
657
查看次数

Java三元运算符优先级?给定不同的输出

我有下面的代码生成此输出(-1后没有空格)==>"1 3 -14 -15 -1"

int [] arr = {1, 3, Integer.MAX_VALUE, 4, Integer.MAX_VALUE, 5, Integer.MAX_VALUE};
for (int dist : arr) {
    System.out.print((dist == Integer.MAX_VALUE) ? -1 : dist + " ");
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我分别评估三元表达式(如下所示),它将给出不同的输出(我所期望的)==> "1 3 -1 4 -1 5 -1"

int [] arr = {1, 3, Integer.MAX_VALUE, 4, Integer.MAX_VALUE, 5, Integer.MAX_VALUE}; 
for (int dist : arr) {
    int finalDist = (dist == Integer.MAX_VALUE) ? -1 : dist;
    System.out.print(finalDist + " ");          
}
Run Code Online (Sandbox Code Playgroud)

第一个代码段出了什么问题?

java ternary-operator

3
推荐指数
1
解决办法
539
查看次数

lambda表达式在netbeans jdk 1.8项目中不起作用

即使我将netbeans项目的jdk更改为1.8,它仍然会出现以下错误

lambda expressions not expected here

lambda expressions are not supported in-source 1.7
(use source 8 or higher to enable lambda expressions)
Run Code Online (Sandbox Code Playgroud)

任何帮助都非常感谢

java lambda netbeans java-8

3
推荐指数
1
解决办法
3020
查看次数

Java 8 lambda添加到Hashmap中的Hashmap中的列表中

我有一个List<POJO>我想从中提取数据,我感兴趣的变量是:

  • Environment: String
  • Application: String
  • Throughput: Double

有7个Environment对象,每个对象Environment有18个Application对象,每个对象都有多个values.

我正在尝试迭代List<POJO>并将这些值存储在一个Hashmap<Environment.ToString, Hashmap<Applications.ToString, List<Double>>

我正在尝试使用Java 8的Lambda功能; 我的代码到目前为止:

private HashMap<String, List<BigDecimal>> appMap = new HashMap<String, List<BigDecimal>>();
private HashMap<String, HashMap> envMap = new HashMap<String, HashMap>();

for(POJO chartModel: List<POJO>) {
    appMap.computeIfAbsent(chartModel.getName(), v -> new ArrayList<BigDecimal>())
          .add(BigDecimal.valueOf(chartModel.getThroughput()));
    envMap.put(chartModel.getEnvironment(), appMap);
}
Run Code Online (Sandbox Code Playgroud)

首先,是否有一种速记方式来迭代List内部Map使用Java8

其次,我的代码不太正确,所以目前地图将所有Throughput值添加到其Application键中,因此我最终得到了18个带有值列表的键.

我需要它做的是envMap我应该有7个Environment对象,每个Application对象有18个对象和值,所以Application总共会有126个对象.这可以通过我尝试的方式实现,是否有Lambda方法来实现这一目标?

java lambda hashmap java-8

3
推荐指数
1
解决办法
1747
查看次数

如何让JToolBar覆盖整个窗口高度?

我写了以下内容,在右侧生成一个工具栏,只有它中的两个按钮一样高.我希望工具栏能够运行窗口的高度 - 从上到下.我需要做什么?

import javax.swing.*;
import java.awt.*;

public class AmtFrame extends JFrame {

    private JToolBar toolBar = null;
    private JButton[] buttons = new JButton[5];
    private Container cp = null;

    AmtFrame() {
        super("AMT");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1000, 600);

        // tool bar
        toolBar = new JToolBar("TaskBar", JToolBar.VERTICAL);
        toolBar.add(buttons[0] = new JButton("Data Entry"));
        toolBar.add(buttons[1] = new JButton("Operations"));

        // layout
        cp = getContentPane();
        cp.setLayout(new BorderLayout());
        cp.add(toolBar, BorderLayout.EAST);
    }

    public static void main(String[] args) {

        new AmtFrame().setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing jtoolbar

2
推荐指数
1
解决办法
513
查看次数

VBA:使用Range.Formula时出错

我正在使用这个公式

ThisWorkbook.Sheets("Overview").Range(formrange).Formula = "=IF(OR(ISBLANK(B2);WEEKDAY(DATE($B$38;$B$37;B2);2)>5;DAY(EOMONTH(DATE($B$38;$B$37;B$3);0))<B2);0;IF(C2=""Y"";0,5;1))"
Run Code Online (Sandbox Code Playgroud)

我有以下错误

Run-time error "1004"
Application-denied or object-defined error
Run Code Online (Sandbox Code Playgroud)

你们想知道那是什么吗?

excel vba excel-vba

2
推荐指数
1
解决办法
317
查看次数

Jenkins 脚本化管道中的分支说明符正则表达式

假设我想在同一脚本化管道下为不同分支定义管道,如何为某些分支模式定义正则表达式。举例来说:-

if(env.BRANCH_NAME ==~ /release.*/){
	 stage("Deploy"){
		echo 'Deployed release to QA'
	 }
Run Code Online (Sandbox Code Playgroud)

在这里,我想以这种方式为模式的任何分支定义该正则表达式

(意味着其中包含发布字符串的任何分支)。如何实现这一目标?

同样如何实现类似的目标:-

如果分支不是开发、掌握、发布(模式)。

regex groovy jenkins jenkins-pipeline

2
推荐指数
1
解决办法
8644
查看次数

使用流API分组时,多个组中的单个元素

我正在查看一些旧代码,在其中对元素进行分组。看起来或多或少是这样的:

Map<Long,List<Items>> groupedItems = ...
for (long groupid : groups){
    for (Item item :items){
        if (isGroupAccepting(item.getId(),groupid) || groupid == item.getGroup()) {
            groupedItems.get(groupid).add(item);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我计划使用流API中的分组替换它,但是我遇到了麻烦。对于我的第二个条件,它工作正常,但是如何处理第一个条件,即应将项添加到接受此类项的每个组中?实际上有可能吗,还是我在这里与失落的原因作斗争?

java java-8 java-stream

2
推荐指数
1
解决办法
79
查看次数

java 8 将字节分割成块

我必须创建一个方法,需要将文件分成多个字节。

示例 byte[] 到 List<byte[]> 中,假设每个大小为 1 MB (sizeMB=1 * 1024 * 1024)

因此 5.2 MB 文件应该由五​​个 1MB 和一个 2KB 组成。[2kb、1MB、1MB、1MB、1MB、1MB]。

byte[] mainFile=getFIle();
List<bute[]> listofSplitBytes=getFileChunks(mainFile);

public void list<bute[]> getFileChunks(byte[] mainFile) {
    int sizeMB = 1 * 1024 * 1024;
    // Split the files logic
}
Run Code Online (Sandbox Code Playgroud)

我试图避免添加if then else来处理。我正在尝试寻找是否有更干净的方法来做到这一点,例如使用流或类似的东西?

java split file java-8 java-stream

2
推荐指数
1
解决办法
3099
查看次数