我在http://www.leepoint.net/notes-java/flow/loops/foreach.html上阅读.每个相当于
for (int i = 0; i < arr.length; i++) {
type var = arr[i];
body-of-loop
}
Run Code Online (Sandbox Code Playgroud)
是
for (type var : arr) {
body-of-loop
}
Run Code Online (Sandbox Code Playgroud)
我的问题是每个循环如何为空列表工作.我知道对于常规for循环,arr.length将仅计算为0并且循环不会执行.每个循环怎么样?
这是基于我的上一个问题 .
按照本教程,我将项目克隆到我的机器中,并尝试正确构建项目.
在修复我在上一个问题中遇到的错误的过程中,我遇到了一个新错误.
这是我试图修复/编辑的构建脚本的一部分
buildscript {
repositories {
mavenCentral()
mavenLocal()
maven { url 'https://github.com/steffenschaefer/gwt-gradle-plugin/raw/maven-repo/' }
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.3'
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
Run Code Online (Sandbox Code Playgroud)
继说明如何检查摇篮版本,我查我的,看到我是跑摇篮版本2.2.1.基于此,我改变了
classpath 'com.android.tools.build:gradle:1.2.3'
Run Code Online (Sandbox Code Playgroud)
至
classpath 'com.android.tools.build:gradle:2.2.1'
Run Code Online (Sandbox Code Playgroud)
但是在更改了构建脚本代码并尝试重建我的项目之后,我得到了上面提到的错误(下面的完整堆栈跟踪)
Error:Could not find com.android.tools.build:gradle:2.2.1.
Searched in the following locations:
file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.pom
file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.jar
https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.pom
https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.jar
file:/C:/Users/chris/.m2/repository/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.pom
file:/C:/Users/chris/.m2/repository/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.jar
https://github.com/steffenschaefer/gwt-gradle-plugin/raw/maven-repo/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.pom
https://github.com/steffenschaefer/gwt-gradle-plugin/raw/maven-repo/com/android/tools/build/gradle/2.2.1/gradle-2.2.1.jar
Required by:
:theplanethatcouldntflygood:unspecified
Run Code Online (Sandbox Code Playgroud)
有谁知道我为什么会收到此错误或如何解决此问题?将Java编译器(类路径)指向我甚至不使用的Gradle版本是没有意义的.
build-automation build gradle build.gradle android-gradle-plugin
这是Cracking the Coding Interview(第5版)中Fibonacci序列的递归实现
int fibonacci(int i) {
if(i == 0) return 0;
if(i == 1) return 1;
return fibonacci(i-1) + fibonaci(i-2);
}
Run Code Online (Sandbox Code Playgroud)
在观看关于该算法的时间复杂度的视频后,斐波纳契时间复杂度,我现在理解为什么该算法在O(2 n)中运行.然而,我正在努力分析空间复杂性.
我在网上看了一下这个问题.
在这个Quora线程中,作者声明"在你的情况下,你有n个堆栈帧f(n),f(n-1),f(n-2),...,f(1)和O(1 )".你不会有2n堆栈帧吗?说f(n-2)一帧是实际的呼叫f(n-2),但是f(n-1)也不会有呼叫f(n-2)?
我在C书中的C示例中看到了这两个参数,但作者没有详细说明两者之间的区别.我知道这%f表明浮动应该取而代之.我试着查看这个,但很难找到这个w符号.怎么样%lf?
这是我的java应用程序GUI的一部分,我有一个问题.

这个GUI包含的是一个蓝色的JPanel(容器),默认的FlowLayout作为LayoutManager,它包含一个Box,其中包含两个JPanels(用于删除水平间距,或者我可以使用setHgaps为零而不是Box),每个包含一个JLabel的.
这是我创建GUI部分的代码.
private void setupSouth() {
final JPanel southPanel = new JPanel();
southPanel.setBackground(Color.BLUE);
final JPanel innerPanel1 = new JPanel();
innerPanel1.setBackground(Color.ORANGE);
innerPanel1.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
innerPanel1.add(new JLabel("Good"));
final JPanel innerPanel2 = new JPanel();
innerPanel2.setBackground(Color.RED);
innerPanel2.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
innerPanel2.add(new JLabel("Luck!"));
final Box southBox = new Box(BoxLayout.LINE_AXIS);
southBox.add(innerPanel1);
southBox.add(innerPanel2);
myFrame.add(southPanel, BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何摆脱外部JPanel(蓝色)和Box之间的垂直填充?
我知道这是填充因为我读到了边距和填充之间的差异?"padding =元素从文本到边框周围(内部)的空间."
这不起作用,因为这必须与组件之间的间隙(空间)有关.-如何在MigLayout中删除JPanel填充?
我试过这个,但它也没用.Java中的JPanel Padding
这些是我在命令窗口中尝试运行简单java版本时遇到的错误.
我遵循错误的建议:注册表项'Software\JavaSoft\Java Runtime Environment'\ CurrentVersion'?.当我继续注册时,这就是我所看到的

这意味着没有什么可以改变 - 正确的运行时版本.然后我做了下一步,即"删除所有以前版本的Java(使用"程序和功能"卸载过程),然后重新安装您想要使用的版本"但是,这也不起作用.. ....这是我当前的java目录(请参阅我安装了所有内容)

而我目前的环境变量是
JAVA_HOME - C:\Program Files\Java\jdk1.7.0_71
Path - C:\Program Files\Java\jdk1.7.0_71\bin
Run Code Online (Sandbox Code Playgroud)
我相信也是正确的http://www.oracle.com/technetwork/java/javase/install-windows-189425.html
有谁知道我怎么能摆脱这个问题?我可以再做一次卸载/安装,但我认为这是浪费时间,不会有所作为.
我正在使用Google Chrome浏览器.我右键单击 - >检查元素以打开inspect元素工具.这是我目前在屏幕上看到的内容

有没有办法可以将检查元素工具重新定位/移动到浏览器屏幕的底部?我尝试查找https://www.google.com/#q=drag+and+drop+inspect+element,但只查找了打开inspect元素工具的快捷方式的结果.
注意:这是Cracking the Coding Interview 5th Edition的问题4.3
问题:给定排序(递增顺序)数组,编写算法以创建具有最小高度的二叉搜索树
这是我的算法,用Java编写来解决这个问题
public static IntTreeNode createBST(int[] array) {
return createBST(array, 0, array.length-1);
}
private static IntTreeNode createBST(int[] array, int left, int right) {
if(right >= left) {
int middle = array[(left + right)/2;
IntTreeNode root = new IntTreeNode(middle);
root.left = createBST(array, left, middle - 1);
root.right = createBST(array, middle + 1, right);
return root;
} else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我对作者的代码检查了这个代码,它几乎相同.
但是,我很难分析此算法的时间复杂度.
我知道这不会像二进制搜索一样在O(logn)中运行,因为你没有在每个递归级别做同样的工作量.EG在第一级,1个工作单元,第2级 - 2个工作单元,第3级 - 4个工作单元,一直记录 …
algorithm complexity-theory big-o time-complexity asymptotic-complexity
这是Cracking the Coding Interview 第 5 版的问题9.5
问题:编写一种方法来计算字符串的所有排列
这是我的解决方案,用Java编码(测试它,它工作:))
public static void generatePerm(String s) {
Queue<Character> poss = new LinkedList<Character>();
int len = s.length();
for(int count=0;count<len;count++)
poss.add(s.charAt(count));
generateRecurse(poss, len, "");
}
private static void generateRecurse(Queue<Character> possibles, int n, String word) {
if(n==0)
System.out.println(word);
else {
for(int count=0;count<n;count++) {
char first = possibles.remove();
generateRecurse(possibles, n-1, word+first);
possibles.add(first);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我同意作者的观点,我的解决方案在O(n!)时间复杂度下运行,因为要解决这个问题,你必须考虑阶乘,就像像"top"这样的单词,第一个字母有三种可能性,2为第二等......
然而,她没有提到空间复杂性.我知道面试官喜欢问你解决方案的时间和空间复杂性.这个解决方案的空间复杂性是什么?
我最初的猜测是O(n 2),因为在每个级别n都有n个递归调用.所以你要加n + n - 1 + n - 2 + n - 3 ..... …