小编den*_*chr的帖子

迭代ruby 1.8.6中的字符串的每个字符(each_char)

我是ruby的新手,目前正尝试与ruby中的基本字符串分别对每个字符进行操作.我正在使用ruby 1.8.6并想做类似的事情:

"ABCDEFG".each_char do |i|
  puts i
end
Run Code Online (Sandbox Code Playgroud)

这会产生一个未定义的方法`each_char'错误.

我期待看到垂直输出:

A
B
C
D
..etc
Run Code Online (Sandbox Code Playgroud)

each_char方法仅定义为1.9吗?我尝试使用普通each方法,但块只是将整个字符串输出到一行.我想办法如何做到这一点的唯一方法就是从头开始创建一个字符数组:

['A','B','C','D','...'].each do|i|
  puts i
end
Run Code Online (Sandbox Code Playgroud)

这输出所需的:

A
B
C
..etc
Run Code Online (Sandbox Code Playgroud)

是否有一种方法可以使用未修改的字符串开始实现此输出?

我认为Java等价物是:

for (int i = 0; i < aString.length(); i++){
  char currentChar = aString.charAt(i);
  System.out.println(currentChar);
}
Run Code Online (Sandbox Code Playgroud)

ruby string iterator

84
推荐指数
3
解决办法
10万
查看次数

区分委派,组合和聚合(Java OO设计)

我面临着一个持续的问题,即彼此区分授权,组合和聚合,并确定最好使用一个而不是另一个的情况.

我已经查阅了Java OO分析和设计书籍,但我的困惑仍然存在.主要解释是:

委派:当我的对象使用另一个对象的功能而不改变它.

组成:我的对象由其他对象组成,而这些对象在我的对象被销毁之后又不能存在 - 垃圾收集.

聚合:我的对象包含其他对象,即使在我的对象被销毁之后也可以存活.

是否有可能有一些简单的例子来说明每个案例,以及它们背后的原因?除了我的对象只是引用另一个对象之外,还能展示这些示例吗?

java oop delegation composition aggregation

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

消息驱动与事件驱动的应用程序集成方法

我想知道当我们引用SOA或中间件时,以及通常在应用程序和企业集成的情况下,消息驱动和事件驱动的环境之间是否有明显的区别.我知道用户界面类似于事件驱动模型,我们的系统拦截用户的操作.

此外,很明显消息传递支持基于发布/订阅,同步或异步通信,事务等的系统.

但是中间件/ soa /应用程序集成上下文有区别吗?(架构级别).我正在尝试咨询维基百科这样的来源(这里这里),但我仍然有些困惑.开发人员何时应该选择一种解决方案?

是否存在一种方法或案例,其中一种方法比另一种更有意义?或者是否有任何全面的资源和指南来实施每一个?

非常感谢任何见解.

integration messaging soa events middleware

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

使用Ant将非代码资源添加到jar文件

我正在将我的java应用程序打包到一个jar文件中.我正在使用蚂蚁和日食.我需要在jar中直接在根文件夹下包含几个单独的非代码文件(xml和txt文件),而不是与代码在同一个地方.

我正在尝试使用includesfile,但这似乎不起作用,这是我的蚂蚁目标:

<target name="distribute" depends="compile" includesfile="readthis.txt">
    <jar destfile="${distributionDir}/myjar.jar" >
        <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>           
    </jar>
</target>
Run Code Online (Sandbox Code Playgroud)

当我省略includesfile参数时,上面的工作正常.另外,我需要添加多个非代码文件.这些文件直接位于Eclipse中的根项目文件夹下,而不是任何Java包中.

另外,正如您在上面所看到的,我基本上也将jar包含在我的源代码中.有没有办法告诉jar任务将源代码放在编译代码的单独文件夹中?

作为编译或构建任务,Ant可以轻松地将源代码与已编译的类分开.但是有没有办法在jar文件中做到这一点?

非常感谢您的时间!

java ant jar

22
推荐指数
1
解决办法
4万
查看次数

使用ruby将输出抑制到控制台

我正在编写一些单元测试,如下所示:

def executing_a_signal
  a_method(a_signal.new, a_model, a_helper);
  assert_equal(new_state, a_model.state)
end
Run Code Online (Sandbox Code Playgroud)

测试工作正常,但是在断言执行逻辑之前运行的方法主要通过以下方式将各种消息打印到控制台puts.

是否有一种快速的,可能是内置的方式来抑制输出到控制台?我只对该方法对模型对象的最终影响感兴趣,并且为了保持控制台基本清洁,我希望找到一种方法来简单地阻止所有输出到控制台而无需重写或注释掉那些puts仅供我测试的陈述.

这绝对不是一个关键问题,但非常希望听到任何想法或想法(或解决方法).

ruby console suppress-warnings

18
推荐指数
2
解决办法
7440
查看次数

如何在Java中按字母顺序对枚举成员进行排序?

我有一个类似以下的枚举类:

public enum Letter {
    OMEGA_LETTER("Omega"), 
    GAMMA_LETTER("Gamma"), 
    BETA_LETTER("Beta"), 
    ALPHA_LETTER("Alpha"), 

    private final String description;

    Letter() {
      description = toString();
    }

    Letter(String description) {
      this.description = description;
    }

    public String getDescription() {
      return description;
    }
}
Run Code Online (Sandbox Code Playgroud)

稍后我的代码我基本上迭代了字母枚举并将其成员打印到控制台:

for (Letter letter : Letter.values()) {
System.out.println(letter.getDescription());
}
Run Code Online (Sandbox Code Playgroud)

我认为values()方法会给我一个enum的有序视图(如这里所提到的),但这不是这里的情况.我只是按照我在Letter枚举类中创建它们的顺序获取枚举成员.有没有办法按字母顺序输出枚举值?我需要一个单独的比较器对象,还是有内置的方法来做到这一点?基本上我希望根据getDescription()文本按字母顺序对值进行排序:

Alpha
Beta
Gamma
Omega
Run Code Online (Sandbox Code Playgroud)

java sorting enums alphabetical comparator

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

ant的junit任务中的另一个java.lang.ClassNotFoundException

我无法弄清楚为什么我从我的ant build.xml文件中获取此异常.我检查过,一切都在类路径中.为什么要这么复杂?!

我过去遇到过Ant问题,似乎它总是与类路径有关.我使用两种方式指向junit.jar:在eclipse:window-> preferences-> ant-> runtime-> Ant Home-> Add External Jars,以及build.xml脚本中.这次Ant无法在junit任务中找到我的测试类.我指向这门课的方式有问题吗?

<target name="init">
    <property name="sourceDir" value="src"/>
    <property name="outputDir" value="build" />
    <property name="junitLocation" value="C:\...\org.junit4_4.3.1\junit.jar" /> 
</target>

<target name="clean" depends="init">
    <delete dir="${outputDir}" />
</target>

<target name="prepare" depends="clean">
    <mkdir dir="${outputDir}" />
</target>

<target name="compile" depends="prepare">
     <javac srcdir="${sourceDir}" destdir="${outputDir}" classpath="${junitLocation}"/>
</target>

<path id="classpath">
   <pathelement location="${outputDir}" />
   <pathelement location="${junitLocation}" />
</path>

<target name="testApplication" depends="compile">
    <echo>Running the junit tests...</echo>
    <junit fork="yes" haltonfailure="yes">
        <test name="my.package.MyTest" />
        <formatter type="plain" usefile="false" />      
        <classpath refid="classpath" />
    </junit>
</target>
Run Code Online (Sandbox Code Playgroud)

我总是得到:

    [junit] …
Run Code Online (Sandbox Code Playgroud)

java ant junit

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

如何正确显示最高两位小数(美分)的价格,包括Java中的尾随零?

有在Java的舍入小数一个很好的问题在这里.但我想知道如何在我的程序中包含尾随零以显示价格:$ 1.50,$ 1.00

简单的解决方案

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

工作正常,但如果它在最后一个小数位,则省略尾随零.虽然我只使用这样的表达式,但我的程序出现了这个问题:

double price = 1.50;
Run Code Online (Sandbox Code Playgroud)

当我使用不同的价格(添加,乘法等)进行计算时,结果主要显示如下:

$2.5000000000000003
Run Code Online (Sandbox Code Playgroud)

因此,使用String.format可以正常工作,但它会将上面的示例截断为

$2.5
Run Code Online (Sandbox Code Playgroud)

是否有正确的方法在小数点后第二位显示尾随零?如果计算的输出应该是,则两者都为零

$2.00
Run Code Online (Sandbox Code Playgroud)

java double decimal-point rounding

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

通过索引引用排序地图上的java对象?

我有一个有序的地图,并希望通过它们的索引位置引用它的有序对象.这可能吗?如何在保持排序的同时将有序映射转换为数组列表,因此我可以通过索引(顺序)检索对象.这是唯一的方法吗?

理想情况下,我可以拥有这个结构,并且知道该结构中的对象的索引,并且可以通过说:

    Object nextObj = structure[4] //this structure is originally a sortedMap
//SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)

我的问题是我首先要有一个有序的地图.有没有一种已知的方法来做到这一点?

非常感谢您提出任何方法.

java sorting collections arraylist map

5
推荐指数
2
解决办法
6352
查看次数

用于递归深度优先搜索以存储路径的额外空间

我使用深度优先搜索来识别有向加权图中的路径,同时重新访问属于循环的节点,并根据行进的总距离设置截止条件,或者从源节点停止.

据我所知,对于递归,深度优先搜索不需要显式堆栈结构,所以我想知道是否可以通过某种方式在没有显式堆栈的情况下进一步简化我的代码:

public class DFSonWeightedDirectedGraph {

    private static final String START = "A";
    private static final String END = "E";
    private int pathLength = 0;
    private int stops = 0;

    public static void main(String[] args) {
        //this is a directed weighted graph
        WeightedDirectedGraph graph = new WeightedDirectedGraph();
        graph.addEdge("A", "B", 15);
        graph.addEdge("A", "D", 15);
        graph.addEdge("A", "E", 27);
        //(...) more edges added


        Stack<String> visited = new Stack<String>();        
        visited.push(START);

        new DFSonWeightedDirectedGraph().depthFirst(graph, visited);
    }

    private void depthFirst(WeightedDirectedGraph graph, Stack<String> visited) {

        Collection<Map.Entry<String, Integer>> tree_of_children …
Run Code Online (Sandbox Code Playgroud)

java algorithm recursion graph depth-first-search

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