好吧所以我试图将我自己的排序算法复制到java中,因为Arrays是我最薄弱的环节,正如他们所说,练习是完美的。我有它需要的所有逻辑,但我正在努力编码,因为我仍然相对较新的Java(任何好的教程将不胜感激)。
1)所以我要做的第一件事是创建一个任意长度的用户输入数组,其中包含整数。 我的代码基于我之前做的字符串列表函数,除了代码不从String传递给整数。
IDE最不喜欢的行是当我尝试转换时:
<div ...
ng-repeat="childController in childControllers"
ng-controller="childController"
...
>
要
List<String> numList = new ArrayList<String>();
这可能是我无法解决的语法错误
2)我想写一些在我看来会起作用的东西:
List<int> numList = new ArrayList<int>();
正如你可以看到逻辑以及代码对我来说似乎是什么,然而它仍然不起作用,并且由于我有限的java知识,我无法理解为什么。
答案 0 :(得分:4)
1)当涉及泛型时,您需要使用类而不是原始类型。因此,Java为每种基本类型引入了精神分裂症类。 $array = array(...); //your values here
function output($item, $key) {
echo $key . ' =>' . $item;
}
array_walk($array, 'output');
的基本类型为int
,因此您必须使用:
Integer
2)你的第二个问题归结为运算符重载,这个概念尚未得到Java的支持。然而,this answer中描述的项目可以帮助您定义运算符并将其编译为相应的Java文件。
您需要使用List<T>#get
和List<T>#set
来操纵List<Integer> numList = new ArrayList<Integer>();
和ArrayList
个对象。此外,List
没有List<T>
但是List<T>#size
方法来检查大小。
将您的算法翻译为.length
的{{1}}将如下所示:
List<Integer>
但它仍然会失败,因为您无法初始化numList
(无论是数组还是for(int i = 0; i <= numList.size(); i++) {
int number1 = numList.get(i);
int number2 = numList.get(i + 1);
int sortedArray[];
if (number1 >= number2) {
sortedArray[i] = number2;
numList.set(i + 1,number1);
} else {
sortedArray[i] = number1;
numList.set(i + 1,number2);
}
}
)。此外,由于sortedArray
循环中的List<T>
(使用<=
而不是for
进行修复),它超出范围。
您不需要<
:您只需要交换项目。试着想一想如何交换物品。话虽如此,使用数组效率可能更高一些,而且还有更快的算法,如 MergeSort , QuickSort 和 HeapSort 。
答案 1 :(得分:0)
您可以使用此类实施。这也可以在您创建对象数组时起作用:
Int op[] = new Int[int n];
java.util.Arrays.fill(op, new Int());
for(int i=0;i < n; i++){
op[i].get();
op[i].processFile();
}