【问题标题】:why does my program print the numbers in my array as zeros but still print the largest value out of the array?为什么我的程序将数组中的数字打印为零,但仍然打印数组中的最大值?
【发布时间】:2018-09-15 22:00:35
【问题描述】:
import java.util.*;
import java.util.Arrays;
import java.util.Random;

class EZD_maxTester
{
  static int variables[] = new int[10];
  static int maximum()
 { 
     Random rand = new Random();

     int max = variables[0];

     for (int i = 0; i < 10; i++) 
     {
       variables[i] = rand.nextInt(100)+1;
     }

      for (int a = 0; a < variables.length; a++)
     {
       if (variables[a] > max)
       {
              max = variables[a];
       }
     }
     return max;
    }


 public static void main(String Args[])
  {
   int option;

   do{
   Scanner kbReader = new Scanner(System.in);
   System.out.println("Integers that will be compared: " + Arrays.toString(variables));
   System.out.println("");
   System.out.println("The maximum value is " + maximum());
   System.out.println("");
   System.out.println("Type 1 to run again. Type 0 to end the program.");
   option = kbReader.nextInt();

   while(option !=1 && option !=0)
   {

     if (option != 1 && option != 0)
     {
       System.out.println("Please enter 1 to run again or 0 to end the program.");
       option = kbReader.nextInt();
     }

   }

   System.out.println("");
   kbReader.close();

   }while(option==1);

 }
}

(我对编码非常陌生,所以我的代码可能没有它应该的那么整洁 !这也是我第一次在这里提问)

我们在课堂上学习数组,我必须编写一个程序,在随机生成的数字数组中找到最大的整数,但是当我运行程序时,数组只是打印为零,但它仍然给了我最大的价值(??)。当我使用static int variables[] = new Random().ints(10, 0, 100).toArray(); 时它会正确打印,但是当我再次运行程序时它只会打印相同的随机数集。如何让它打印出数组而不用零掩盖我的数字?

【问题讨论】:

  • 我建议你学习如何调试自己的代码。阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 了解一些提示。
  • 附注:你应该在循环之前只创建一次Scanner,而不是每次在循环周围创建一次,你不应该close()它,因为它包裹System.in,你没有不要打开那个。规则是,你应该关闭你打开的任何东西,但只能关闭你打开的东西。

标签: java arrays random drjava


【解决方案1】:

此语句前需要调用maximum()方法:

System.out.println("Integers that will be compared: " + Arrays.toString(variables));

【讨论】:

    【解决方案2】:

    您在maximum() 之前调用System.out.println(Arrays.toString(variables)); - 第二个实际上设置了数组中的值,因此当您打印时它们都为零。调用maximum();后将打印移动到@

    // System.out.println("Integers that will be compared: " + Arrays.toString(variables));
    System.out.println("The maximum value is " + maximum());
    System.out.println("Integers that were compared: " + Arrays.toString(variables));
    

    【讨论】:

      【解决方案3】:

      当你打电话时

      System.out.println(Arrays.toString(variables));
      

      你还没有填写数组。

      数组在maximum方法中填充。

      一个简单的改变是在 填充数组之后打印数组

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-22
        • 2014-04-06
        • 2022-01-25
        • 1970-01-01
        相关资源
        最近更新 更多