小编Ale*_*ing的帖子

打印Java数组最简单的方法是什么?

在Java中,数组不会覆盖toString(),因此如果您尝试直接打印数组,则会获得className + @ + className数组的十六进制,如下所示hashCode:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'
Run Code Online (Sandbox Code Playgroud)

但通常我们实际上想要更像的东西Object.toString().这样做最简单的方法是什么?以下是一些示例输入和输出:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Run Code Online (Sandbox Code Playgroud)

java printing arrays

1852
推荐指数
20
解决办法
217万
查看次数

如何在Java中将数字舍入到n个小数位

我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.

我也希望只显示有效数字 - 即不应该有任何尾随零.

我知道这样做的一种方法是使用该String.format方法:

String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91239
Run Code Online (Sandbox Code Playgroud)

这很好,但它总是显示5位小数的数字,即使它们不重要:

String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91230
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用DecimalFormatter:

DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91238
Run Code Online (Sandbox Code Playgroud)

但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:

0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)

在Java中实现这一目标的最佳方法是什么?

java decimal rounding digits

1209
推荐指数
22
解决办法
155万
查看次数

如何使用NodeJS connect从请求中提取请求http标头

我想获得使用Node JS的连接库包发出的请求的"Host"头.我的代码看起来像:

var app = connect()
  .use(connect.logger('dev'))
  .use(connect.static('public'))
  .use(function(req, res){

    var host = req.???

  })
 .listen(3000);
Run Code Online (Sandbox Code Playgroud)

连接的文档在这里,但我没有看到任何详细说明req上述代码中的对象的API .http://www.senchalabs.org/connect/

编辑:注意一个成功的答案必须指向文档(我需要这个来验证哪个版本提供了我正在寻找的API).

node.js

243
推荐指数
5
解决办法
32万
查看次数

恢复git中的一系列提交

如何在git中恢复一系列提交?从查看gitrevisions文档,我看不出如何指定我需要的范围.例如:

A -> B -> C -> D -> E -> HEAD
Run Code Online (Sandbox Code Playgroud)

我想做相同的:

git revert B-D
Run Code Online (Sandbox Code Playgroud)

结果将是:

A -> B -> C -> D -> E -> F -> HEAD
Run Code Online (Sandbox Code Playgroud)

其中F包含BD的反向.

git range revert

109
推荐指数
3
解决办法
5万
查看次数

如何使用ng-repeat迭代AngularJS中的映射条目

您将如何迭代地图中的条目,以便可以打印输入键和值?例如,我想做这样的事情:

<ul>
    <li ng-repeat='mapEntry in {"First Name":"John", "Last Name":"Smith"}'>
        <span>Key: {{mapEntry.key}}, value: {{mapEntry.value}}</span>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

angularjs

67
推荐指数
1
解决办法
6万
查看次数

在后台运行bash命令而不打印作业和进程ID

在bash中在后台运行进程非常简单.

$ echo "Hello I'm a background task" &
[1] 2076
Hello I'm a background task
[1]+  Done                    echo "Hello I'm a background task"
Run Code Online (Sandbox Code Playgroud)

但输出结果很冗长.在第一行打印后台任务的作业ID和进程ID,然后我们输出命令,最后我们有作业ID,它的状态和触发作业的命令.

有没有办法抑制运行后台任务的输出,使输出看起来与没有前后的&符号完全一样?即:

$ echo "Hello I'm a background task" &
Hello I'm a background task
Run Code Online (Sandbox Code Playgroud)

我问的原因是我想运行后台进程作为tab-completion命令的一部分,因此该命令的输出必须不间断才有意义.

bash bash-completion

64
推荐指数
6
解决办法
3万
查看次数

搜索流的字符串的有效方法

假设我有一个文本流(或Java中的Reader),我想检查一个特定的字符串.文本流可能非常大,因此一旦找到搜索字符串,我就想返回true并且还试图避免将整个输入存储在内存中.

天真地,我可能会尝试做这样的事情(在Java中):

public boolean streamContainsString(Reader reader, String searchString) throws IOException {
    char[] buffer = new char[1024];
    int numCharsRead;
    while((numCharsRead = reader.read(buffer)) > 0) {
        if ((new String(buffer, 0, numCharsRead)).indexOf(searchString) >= 0)
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

当然,如果它出现在1k缓冲区的边界上,则无法检测到给定的搜索字符串:

搜索文本:"stackoverflow"
流缓冲区1:"abc ......... stack"
流缓冲区2:"溢出....... xyz"

如何修改此代码,以便正确地找到跨越缓冲区边界的给定搜索字符串,但不将整个流加载到内存中?

编辑:注意在搜索字符串的流时,我们尝试最小化从流中读取的数量(以避免网络/磁盘中的延迟)并保持内存使用不变,无论流中的数据量如何.字符串匹配算法的实际效率是次要的,但很明显,找到使用这些算法中更有效的算法之一的解决方案会很好.

java string algorithm search stream

50
推荐指数
4
解决办法
3万
查看次数

生成实现接口的JAXB类

我目前正在使用JAXB生成java类以解组XML.现在我想创建一个与第一个非常类似的新模式,并使生成的类实现相同的接口.

比方说,我有两个模式文件,用于定义具有相似标签的XML:

adult.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:element name="Person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="Age" type="xs:integer" />
      <xs:element name="Job" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

kid.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:element name="Person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="Age" type="xs:integer" />
      <xs:element name="School" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

使用JAXB和XJC我想生成两个类文件:

public class Adult implements Person {
    ...
    public String getName() { ... }
    public int getAge() { ... }
    public String getJob { ... }
}

public class Kid implements Person …
Run Code Online (Sandbox Code Playgroud)

java xsd jaxb xjc jaxb2-basics

50
推荐指数
4
解决办法
6万
查看次数

用于在IntelliJ中显示错误的键盘快捷方式

出于健康原因,我喜欢尽量少用鼠标.IntelliJ中的几乎所有常见任务都可以通过键盘快捷键完成,但显示错误消息除外.如何使用键盘快捷键显示突出显示的错误的工具提示?

例如,我有一个错误,例如:

在此输入图像描述

然后我点击[magic-keyboard-command]然后我得到:

在此输入图像描述

在Eclipse中,按F2即可实现.IntelliJ中是否有等价物?

keyboard-shortcuts intellij-idea

40
推荐指数
2
解决办法
7873
查看次数

在groovy中向对象动态添加属性或方法

是否可以在Groovy中动态地向对象添加属性或方法?这是我到目前为止所尝试的:

class Greet {
  def name
  Greet(who) { name = who[0].toUpperCase() + [1..-1] }
  def salute() { println "Hello $name!" }
}

g = new Greet('world')  // create object
g.salute()              // Output "Hello World!"

g.bye = { println "Goodbye, $name" }
g.bye()
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

Hello World!
Caught: groovy.lang.MissingPropertyException: No such property: bye for class: Greet
Possible solutions: name
    at test.run(greet.groovy:11)
Run Code Online (Sandbox Code Playgroud)

groovy monkeypatching

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