Java 合并两个已排序的用户输入数组时出现问题
编写一个代码,从用户定义长度的用户中读取两个已经排序的数组,然后将它们排序到一个仍然排序的列表中。不知什么原因,我不能让它排序超过前三位?看起来可能是我错过了一些非常简单的东西,但我已经摆弄了一段时间,什么也没找到。有什么想法吗Java 合并两个已排序的用户输入数组时出现问题,java,arrays,sorting,Java,Arrays,Sorting,编写一个代码,从用户定义长度的用户中读取两个已经排序的数组,然后将它们排序到一个仍然排序的列表中。不知什么原因,我不能让它排序超过前三位?看起来可能是我错过了一些非常简单的东西,但我已经摆弄了一段时间,什么也没找到。有什么想法吗 Sample Run: How long are the lists?: 3 Enter list A: 1: 1.0 2: 2.0 3: 3.0 Enter list B: 1: 2.0 2: 3.0 3: 4.0 Merged List: 1.0, 2.0, 2
Sample Run:
How long are the lists?: 3
Enter list A:
1: 1.0
2: 2.0
3: 3.0
Enter list B:
1: 2.0
2: 3.0
3: 4.0
Merged List: 1.0, 2.0, 2.0, 3.0, 3.0, 4.0
代码:
import java.util.Scanner//导入扫描仪
公共类项目2{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);//扫描仪输入
int a=0;
System.out.println(“列表有多长?”);
系统输出打印(“(列表长度应相同):”;
a=输入.nextInt();
double[]lista=new double[a];//创建数组
double[]listb=newdouble[a];//创建数组
整数计数=1;
System.out.println(“为列表A输入数字:”);
对于(int j=0;j对于(int j=0;j提示:由于您将两个排序的列表合并为一个(输出)排序列表,考虑为输出列表的大小执行的循环…并将下一个输出槽放入下两个输入列表中的每一个适当的值。
在该循环中,您希望比较什么来查看下一个值?
你会如何处理在一张清单之前让另一张清单筋疲力尽的问题?
如何对程序进行通用化,使两个输入列表不必具有相同的长度
(没有作业代码)
提示:由于将两个排序列表合并为一个(输出)排序列表,考虑为输出列表的大小而执行的循环,并将下一个输出槽放入下两个输入列表中的每一个适当的值。
在该循环中,您希望比较什么来查看下一个值?
你会如何处理在一张清单之前让另一张清单筋疲力尽的问题?
如何对程序进行通用化,使两个输入列表不必具有相同的长度
(作业无代码)您正在将两个长度为a
的数组合并为长度为2*a
的数组,但您只打印出第一个a
数字。修改打印合并数组的for
循环条件:
for(int j=0; j< 2*a; j++){
您正在将两个长度为a
的数组合并为长度为2*a
的数组,但您只打印出第一个a
数字。修改打印合并数组的循环条件:
for(int j=0; j< 2*a; j++){
为什么不直接使用JDK方法java.util.Arrays#sort(double[])
而不是重新发明轮子?为什么不直接使用JDK方法java.util.Arrays#sort(double[])
而不是重新发明轮子?也许是为了理解逻辑……这是一个常见的学术问题。是的,我被告知基本上都是从头开始做的。@CrystalMeth用于学习目的,好吧,但我至少也会使用方法Double#compare(Double,Double)
更恰当地处理一些特殊的双重情况。@maribov边缘情况可能是处理NaN和-0.0以理解逻辑……这是一个常见的学术问题。是的,我被告知基本上都是从头开始做的。@CrystalMeth用于学习目的,好吧,但我至少也会使用方法双重比较(double,double)
以更恰当地处理某些特殊的双重情况。@maribov边缘情况将处理NaN和-0.0
double[] listc = project2.merge(lista, listb);
System.out.println(); // print the new merged listc
System.out.print("Merged List: ");
for(int j=0; j < listc.length; j++){
System.out.print(merged[j] + ", ");
}