Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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
如何以数字0退出循环?但现在我还有其他问题 包装hw3; 公共班机{ 公共静态void main(字符串[]args){ 最终int NumberOfElements=1000; int[]num=新的int[NumberOfElements]; int-var=0; //创建输入 java.util.Scanner输入=新的java.util.Scanner(System.in); for(int i=0;i_Java_Arrays_Loops - Fatal编程技术网

如何以数字0退出循环?但现在我还有其他问题 包装hw3; 公共班机{ 公共静态void main(字符串[]args){ 最终int NumberOfElements=1000; int[]num=新的int[NumberOfElements]; int-var=0; //创建输入 java.util.Scanner输入=新的java.util.Scanner(System.in); for(int i=0;i

如何以数字0退出循环?但现在我还有其他问题 包装hw3; 公共班机{ 公共静态void main(字符串[]args){ 最终int NumberOfElements=1000; int[]num=新的int[NumberOfElements]; int-var=0; //创建输入 java.util.Scanner输入=新的java.util.Scanner(System.in); for(int i=0;i,java,arrays,loops,Java,Arrays,Loops,编写一个Java程序,读取每行输入一个正整数的序列。输入整数“0”时,程序停止读取。程序将按升序对它们进行排序并输出。例如:5 1. 7. 12 36 8. 0 输出:1 5 7 8 12 36在这里,您的应用程序正在读取int,您可以检查最后一个是否为!=从0开始。和中断循环。 如果您不喜欢使用break,您仍然可以为的添加一个条件 对于数组排序,有Arrays.sort()解决方案 要打印它们,您需要另一个循环,但要小心,因为数组中的项目可能少于1000个,您不能简单地打印整个数组。 您需要

编写一个Java程序,读取每行输入一个正整数的序列。输入整数“0”时,程序停止读取。程序将按升序对它们进行排序并输出。例如:5 1. 7. 12 36 8. 0
输出:1 5 7 8 12 36

在这里,您的应用程序正在读取int,您可以检查最后一个是否为!=从0开始。和
中断循环。
如果您不喜欢使用break,您仍然可以为
添加一个条件

对于数组排序,有
Arrays.sort()
解决方案

要打印它们,您需要另一个循环,但要小心,因为数组中的项目可能少于1000个,您不能简单地打印整个数组。
您需要找到一种方法来计算在数组中添加的元素数


编辑后:

很好,您的应用程序似乎很有效,这是我得到的:

Mac Makkhdyn:~Makkhdyn$javahw3.Main
输入任意正数或输入0停止:1
输入任意正数或输入0停止:2
输入任意正数或输入0停止:3
输入任意正数或输入0停止:4
输入任意正数或输入0停止:5
输入任意正数或输入0停止:0
麦克·马克戴恩:~Makkhdyn$

您拥有的0必须来自其他地方。您的实际代码与您在此处发布的代码不是略有不同吗


资源:

for (i = 0; i < num.length; i++) {
      System.out.print("  " + num[i]);
   }

num[i]
保存您正在读取的最后一个数字。因此,您必须将其与
0
进行比较,如果它是
0
,则必须结束循环。阅读了解如何做到这一点


一般来说,阅读这本书可能对你也有好处。

试着理解这个问题:有三个步骤。
步骤1:从用户处获取输入。继续获取输入,直到用户输入0
步骤2:排序
第三步:打印结果

步骤1:您的
for
循环几乎正确。
但是for循环应该在获得输入后立即结束。
在下面的代码中

package hw3;

public class Main {
    public static void main(String[] args) {
        final int NumberOfElements = 1000;
        int[] num = new int[NumberOfElements];
        int var = 0;
        //create input
        java.util.Scanner input = new java.util.Scanner(System.in);
        for (int i = 0; i < NumberOfElements; i++) {
            System.out.print("Enter any positive number or enter 0 to stop: ");
            num[i] = input.nextInt();
            var++; 
            if (num[i] == 0)

                break;

            }
             Arrays.sort( num, 0, var);
             int i;
             for (i = 0; i < var; i++) {
             System.out.print("   " + num[i]);


        }
    }
}

您正在将用户输入添加到数组中,然后检查它是否为
0
。这意味着
0
也将是数组的一部分。如果您不希望这样做,则应检查输入,仅当输入不是
0
时才将其添加到数组中

还要注意
for
循环前面的
i
声明。因为我们在for循环之后需要它。为什么?见下文

   num[i] = input.nextInt();
   var++; 
   if (num[i] == 0)
      break;
问题是,在步骤2中,对1000个元素的数组进行排序,而实际上只需要考虑用户输入的元素数量。起初你不知道这就是为什么你创建了1000个元素的数组,但是现在(在第2步之后)你知道用户输入了多少个元素。这在
i

因此,1和2之间的新步骤是:创建一个只包含用户输入的元素的新数组。
第1.5步:

for (i = 0; i < num.length; i++) {
      System.out.print("  " + num[i]);
   }
现在对这个新数组进行排序,并打印它(与代码相同,但使用我们刚刚创建的新数组)

Arrays.sort(newArray)

排序(自制)(代替上述步骤2):

for (i = 0; i < num.length; i++) {
      System.out.print("  " + num[i]);
   }
  • 通过元素循环
  • 如果一个元素大于上一个元素,则交换它们(按asc顺序,上一个元素始终小于或等于下一个元素)
  • 有两个循环,因为您必须在连续的基础上进行比较:第一个元素,与整个数组进行比较,将其放置在正确的位置,第二个元素与整个数组进行比较,等等。)


    用于(int j=0;jjk你在使用什么JDK?使用OpenJDK 1.6.0,我在输出中看不到额外的零。好的,它现在似乎可以工作了。在我复制和粘贴之后。你真的需要使用数组吗?这是作业中指定的吗?我想是的,因为我们简单地了解到还有一种通过交换数字来完成的方法。奇怪的是,现在我复制粘贴它,它似乎工作了k、 …好的,我想现在是下一个问题,即添加数组.sort(),而不打印出1000个字符…System.out.print(“accing order number:”;arrays.sort(num);for(i=0;ifor (i = 0; i < newArray.length; i++) {
          System.out.print("  " + newArray[i]);
       }
    
    int[] newArray = new int[i]
    for(int j=0; j<i; j++){
       newArray[j] = num[j];
    }
    
      for(int j=0; j<newArray.length; j++) {
          for(int k=0; k<newArray.length; k++) {
             if(newArray[k] > newArray[j]) { 
                //the swap logic:
                int t = newArray[k];
                newArray[k] = newArray[j];
                newArray[j] = t;
             }
          }
       }