我正在使用埃拉托色尼的 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和C#中运行了相同的代码,它给出了两个不同的结果.
为什么?由于两种语言的双打具有完全相同的规格:
double是一种表示Java中64位IEEE 754浮点数的类型
double是一种表示C#中IEEE 754格式的64位双精度数的类型 .
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)
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) 我有下面的代码生成此输出(-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)
第一个代码段出了什么问题?
即使我将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)
任何帮助都非常感谢
我有一个List<POJO>我想从中提取数据,我感兴趣的变量是:
Environment: StringApplication: StringThroughput: 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方法来实现这一目标?
我写了以下内容,在右侧生成一个工具栏,只有它中的两个按钮一样高.我希望工具栏能够运行窗口的高度 - 从上到下.我需要做什么?
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) 我正在使用这个公式
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)
你们想知道那是什么吗?
假设我想在同一脚本化管道下为不同分支定义管道,如何为某些分支模式定义正则表达式。举例来说:-
if(env.BRANCH_NAME ==~ /release.*/){
stage("Deploy"){
echo 'Deployed release to QA'
}Run Code Online (Sandbox Code Playgroud)
在这里,我想以这种方式为模式的任何分支定义该正则表达式
(意味着其中包含发布字符串的任何分支)。如何实现这一目标?
同样如何实现类似的目标:-
如果分支不是开发、掌握、发布(模式)。
我正在查看一些旧代码,在其中对元素进行分组。看起来或多或少是这样的:
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中的分组替换它,但是我遇到了麻烦。对于我的第二个条件,它工作正常,但是如何处理第一个条件,即应将项添加到接受此类项的每个组中?实际上有可能吗,还是我在这里与失落的原因作斗争?
我必须创建一个方法,需要将文件分成多个字节。
示例 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来处理。我正在尝试寻找是否有更干净的方法来做到这一点,例如使用流或类似的东西?