当前位置: 首页 > 知识库问答 >
问题:

它不会检查数组是否按升序排列

端木皓君
2023-03-14
   int [] ary1 = new int [100];
   int [] ary2 = new int [100];


   System.out.println("Enter no more than 100 integers in ascending order. To end, enter a negative number.");
   int num1 = user.nextInt();
   int count1 = 0;
   while ((num1 > -1) && (count1 < ary1.length)){
   ary1[count1] = num1;
   count1++;
   num1 = user.nextInt();

这是第一个数组。

用户可以输入不超过100个整数,如果用户输入负数,将停止。

    if (num1 < 0){ 
    System.out.println("Enter your second list of integers from least to greatest. To end, enter a negative number.");
    int num2 = user.nextInt();
    int count2 = 0;
    while ((num2 > -1) && (count2 < ary2.length)){
    ary2[count2] = num2;
    count2++;
    num2 = user.nextInt();

这是第二个数组。

用户可以输入不超过100个整数,如果用户输入负数将结束。

    if (num2 < 0){
      for (int one = 0; one < count1; one++){
        System.out.print(ary1[one]+" ");}   

打印出第一个整数列表

      System.out.println("");     **//skip a line**

      for (int two =0; two < count2; two++){
        System.out.print(ary2[two]+" ");}   p

rint出第二个整数列表

      System.out.println("");     **//skip a line**

问题在于,它不会检查数组是否按升序排列。↓↓↓

       int inOrder = 0;    
      for (int check1 = 0; check1 < count1-1; check1++){
        if (ary1[check1] > ary1[check1++]){
          System.out.println("Error: Array not in correct order.");
          break;
        }else{
           inOrder = 1;
        }}

        for (int check2 = 0; check2 < count2-1; check2++){
        if (ary2[check2] > ary2[check2++]){
          System.out.println("Error: Array not in correct order.");
          break;
        }else{
          inOrder = 1;
        }} 



        }}
    }  }}}

如果inOder=1,我需要合并这两个数组。

共有2个答案

况唯
2023-03-14

问题在于:

if (ary1[check1] > ary1[check1++])

将此更改为:

if (ary1[check1] > ary1[check1 + 1])
苏弘盛
2023-03-14

您的问题在于如何递增check1和check2变量:

if (ary1[check1] > ary1[check1++]){ }
if (ary2[check2] > ary2[check2++]){ }

对于这些循环,您使用的是check1check2。将放在变量名的末尾,计算结果为增量之前的表达式值。将放在变量名之前,首先递增变量,然后计算表达式。解决方法是像这样重新定位你的

if (ary1[check1] > ary1[++check1]){ }
if (ary2[check2] > ary2[++check2]){ }

看这篇文章,更好地理解前缀/后缀运算符:

Java:递增/递减运算符的前缀/后缀?

更新:其他用户注意到,由于循环控制也在进行,增量实际上发生了两次。要修复,请将check 1替换为check 1。我几乎感到内疚,认为这是正确的!

 类似资料:
  • 我在学校的任务是创建一个程序,以升序排列数组的值。它几乎就在那里,但每当我输入“44 55 66 22 33 11 77 99 88 66”或它输出的任何数字 -858993460,11,22,33,44,55,66,66,77,88,或开头为负数 第一个数字到底怎么了?我是不是缺了什么? 我对C++很陌生,我不太明白这里的问题。如果有什么建议我可以用请告诉他们。 }

  • 问题内容: 我想扩展Array类,以便它可以知道它是否已排序(升序)。我想添加一个称为的计算属性。如何声明数组的元素具有可比性? 我目前在Playground中的实现 错误 当然,我仍然遇到错误,因为Swift不知道如何比较元素。如何在Swift中实现此扩展?还是我在这里做错了什么? 问题答案: 自由函数的替代解决方案是执行Swift的内置函数和方法,并要求您将合适的比较器传递给该方法:

  • 这是我面试问题的一部分。 给定一个整数序列作为一个数组,我必须确定是否可以通过从数组中移除不超过一个元素来获得一个严格递增的序列。 例如, 对于,输出应该是

  • 有人能提供帮助,如何检查排序降序数组以及?干杯!

  • 问题内容: AngularJs中的内联方法是否可以检查某物是否为数组? 我本以为这样可以工作: 我已经证实它实际上是一个数组。有什么我想念的东西吗? 问题答案: 您可以戴上瞄准镜… 小提琴

  • 本文向大家介绍检查它在C ++中是否是一个好的数组,包括了检查它在C ++中是否是一个好的数组的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个称为正整数的数组。我们必须选择一些数字子集,然后将每个元素乘以一个整数,然后将所有这些数字相加。如果我们可以通过任何可能的子集和被乘数从数组中得到1的和,则该数组将是一个很好的数组。 我们必须检查数组是否正确。 因此,如果输入类似于[12,23,7,