【问题标题】:How can I omit the middle value number from the sequence?如何从序列中省略中间值数字?
【发布时间】:2012-03-01 04:09:01
【问题描述】:

我正在尝试构建一个如下所示的程序: 用户输入 3 个数字。 系统打印出用户输入的从最低值到最高值的数字升序。 例如:如果用户输入 1 然后 4 然后 8 它应该打印出 1,2,3,5,6,7,8 省略 4 因为它是具有中间值的数字。 如何让程序忽略这个数字?

System.out.print("Enter a number: ");
int n1 = Integer.parseInt(in.readLine());
System.out.print("Enter a number: ");
int n2 = Integer.parseInt(in.readLine());
System.out.print("Enter a number: ");
int n3 = Integer.parseInt(in.readLine());
int i = 0;
if ((n1 > n2) && (n2 > n3)) {
    for (i = n3; (i <= n1); i++) {
        String o = i + ",";
        System.out.print(o);
    }
}
else if ((n1 > n3) && (n3 > n2)) {
    for (i = n2; (i <= n1); i++) {
        String o = i + ",";
        System.out.print(o);
    }
}
else if ((n2 > n3) && (n3 > n1)) {
    for (i = n1; (i <= n2); i++) {
        String o = i + ",";
        System.out.print(o);
    }
}
else if ((n2 > n1) && (n1 > n3)) {
    for (i = n3; (i <= n2); i++) {
        String o = i + ",";
        System.out.print(o);
    }
}
else if ((n3 > n2) && (n2 > n1)) {
    for (i = n1; (i <= n3); i++) {
        String o = i + ",";
        System.out.print(o);
    }
}
else if ((n3 > n1) && (n1 > n2)) {
    for (i = n2; (i <= n3); i++) {
        String o = i + ",";
        System.out.print(o);
    }
}
System.out.println("\n" + "The sum of the sequence is " + i);

【问题讨论】:

    标签: java if-statement for-loop int


    【解决方案1】:

    你把事情搞得太复杂了。

    让用户输入 3 个数字并在三个变量 abc 中读取它们。然后只需使用for循环从a迭代到c,如果值等于b则不打印。

    System.out.print("Enter a number: ");
    int a = Integer.parseInt(in.readLine());
    System.out.print("Enter a number: ");
    int b = Integer.parseInt(in.readLine());
    System.out.print("Enter a number: ");
    int c = Integer.parseInt(in.readLine());
    
    for(int i = a; i < c; i++)
    {
       if(i != b)
          System.out.println(i);
    }
    

    迭代让你的生活变得轻松。

    【讨论】:

      【解决方案2】:

      如果您试图找出哪些数字是最高的中间和最低的。然后将数字显示为发出中间数字的列表。您没有在 if 语句中嵌套 for 语句

      这是因为 for 语句实际上不需要处理 n1、n2 或只处理最高、最低和中间的数字。如果您创建中间变量可以预先分配给它们,并且没有像您正在做的那样在 if 中嵌套 for 语句。

      事实上,您可以完全摆脱 if 语句并使用 Math.max(a,b)(如果您使用 java),并在找到最高、中间和最低的数字。

      你可能想尝试这样的事情:

              System.out.print("Enter a number: ");
              int n1 = Integer.parseInt(in.readLine());
              System.out.print("Enter a number: ");
              int n2 = Integer.parseInt(in.readLine());
              System.out.print("Enter a number: ");
              int n3 = Integer.parseInt(in.readLine());
      
              int higher1 = Math.max(n1, n2);
              int lower1 =  Math.min(n1, n2);
      
              int lowest = Math.min(lower1, n3);
              int highest = Math.max(higher1, n3);
      
              int middle;
              if (n3 < lower1 ) {
                  middle = lower1;
              } else if (n3 > higher1) {
                  middle = higher1;
              } else {
                  middle = n3;
              }
      
              System.out.println("The highest is: " + highest);
              System.out.println("The middle is: " + middle);
              System.out.println("The lowest is: " + lowest);
      
      
              for ( int count = lowest; count <= highest; count++){
                  if (count != middle) {
                      System.out.println(count);
                  }
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多