Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 合并两个已排序的用户输入数组时出现问题_Java_Arrays_Sorting - Fatal编程技术网

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] + ", ");
}