小编Pet*_*ter的帖子

F#是检查列表是否已排序的函数

我必须编写一个函数,如果给定列表按升序排序,则返回true.空元素和单元素列表已排序.此外,[5,12,12]应该返回true.

我编写了一个似乎有效的函数:

let rec isSorted (l: int list) = 
    match l with
    | [] -> true
    | [x] -> true
    | [x;y] -> x <= y
    | x::y::xr -> if x > y then false else isSorted([y] @ xr);
Run Code Online (Sandbox Code Playgroud)

但它似乎有点偏离......我在想必须有一个更简单的方法来做到这一点?我讨厌我必须匹配4个案例,但我无法弄清楚如何让它变得更聪明.

更好的解决方案?

f# pattern-matching

2
推荐指数
3
解决办法
1167
查看次数

带有flowlayout的java scrollpane

出于某种原因,我不能这样做.它应该很简单.

我有一个带有a的JFrame BorderLayout,其中包含一个JPanel(SOUTH)和一个(CENTER)JPanel(itemPanel).

itemPanel应该包含在滚动窗格中.它的宽度= x,并且它的所有子节点共享它的长度,所以它基本上就像一个只有一列的表.

出于某种原因,我无法获得滚动窗格来显示滚动条(和滚动).在JFrame中:

setPreferredSize(dimension);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add("South",controlPanel);
JScrollPane scroll = new JScrollPane(itemPanel);
scroll.setBorder(null);
getContentPane().add("Center",scroll);
super.pack();
setVisible(true);
Run Code Online (Sandbox Code Playgroud)

初始化并向itemPanel添加一些虚拟面板:

itemPanel = new ItemPanel(); // A JPanel with a flowlayout
itemPanel.setPreferredSize(new Dimension(dimension.width,0));
for(int i = 0; i < 20; i++){
  JPanel p = new JPanel();
  p.setPreferredSize(new Dimension(0,50));
  p.setBackground(i%2 == 0 ? Color.GREEN : Color.YELLOW);
  itemPanel.add(p);
}
Run Code Online (Sandbox Code Playgroud)

如果省略itemPanel.setPreferredSize(new Dimension(dimension.width,0));滚动窗格显示水平滚动条,但由于flowlayout没有要跟随的宽度,它只显示一行中的组件.

java swing jscrollpane flowlayout

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

标签 统计

f# ×1

flowlayout ×1

java ×1

jscrollpane ×1

pattern-matching ×1

swing ×1