我是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) 我面临着一个持续的问题,即彼此区分授权,组合和聚合,并确定最好使用一个而不是另一个的情况.
我已经查阅了Java OO分析和设计书籍,但我的困惑仍然存在.主要解释是:
委派:当我的对象使用另一个对象的功能而不改变它.
组成:我的对象由其他对象组成,而这些对象在我的对象被销毁之后又不能存在 - 垃圾收集.
聚合:我的对象包含其他对象,即使在我的对象被销毁之后也可以存活.
是否有可能有一些简单的例子来说明每个案例,以及它们背后的原因?除了我的对象只是引用另一个对象之外,还能展示这些示例吗?
我正在将我的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文件中做到这一点?
非常感谢您的时间!
我正在编写一些单元测试,如下所示:
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仅供我测试的陈述.
这绝对不是一个关键问题,但非常希望听到任何想法或想法(或解决方法).
我有一个类似以下的枚举类:
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) 我无法弄清楚为什么我从我的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的舍入小数一个很好的问题在这里.但我想知道如何在我的程序中包含尾随零以显示价格:$ 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) 我有一个有序的地图,并希望通过它们的索引位置引用它的有序对象.这可能吗?如何在保持排序的同时将有序映射转换为数组列表,因此我可以通过索引(顺序)检索对象.这是唯一的方法吗?
理想情况下,我可以拥有这个结构,并且知道该结构中的对象的索引,并且可以通过说:
Object nextObj = structure[4] //this structure is originally a sortedMap
//SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)
我的问题是我首先要有一个有序的地图.有没有一种已知的方法来做到这一点?
非常感谢您提出任何方法.
我使用深度优先搜索来识别有向加权图中的路径,同时重新访问属于循环的节点,并根据行进的总距离设置截止条件,或者从源节点停止.
据我所知,对于递归,深度优先搜索不需要显式堆栈结构,所以我想知道是否可以通过某种方式在没有显式堆栈的情况下进一步简化我的代码:
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 ×7
ant ×2
ruby ×2
sorting ×2
aggregation ×1
algorithm ×1
alphabetical ×1
arraylist ×1
collections ×1
comparator ×1
composition ×1
console ×1
delegation ×1
double ×1
enums ×1
events ×1
graph ×1
integration ×1
iterator ×1
jar ×1
junit ×1
map ×1
messaging ×1
middleware ×1
oop ×1
recursion ×1
rounding ×1
soa ×1
string ×1