输出只给出数组中的最后一个数字而不是全部?

时间:2014-03-02 20:43:29

标签: java arrays merge

我正在参加AP java课程。赋值是将两个数组设置为存储多达10,000个整数。这很容易。但那并不是我需要帮助的地方。它有用户输入要存储在每个数组中的数字,一次输入一个整数。输入负数(例如-4)会告诉程序停止在该数组中输入数字。因此,如果你输入-1到arrayone,而不是添加它,它将转移到arraytwo。在数组中,它继续前进到下一位。我遇到麻烦的是输出。这是我的代码:

import java.io.*;
import static java.lang.System.*;

import java.util.Scanner;
import java.lang.Math;

class Main{

     public static void main (String str[]) throws IOException {
       Scanner scan = new Scanner(System.in);

          int arrayone [] = new int[10000];
          int arraytwo [] = new int[10000];
          {
          for (int i = 0; i < arrayone.length; i++)
          {
          System.out.println("Enter integers ");
          while(arrayone[i] >= 0) {
          arrayone[i] = scan.nextInt();
          }
          {
          System.out.println("\nEnter the values for the second array, up to 10000 values, enter a negative number to quit");
          while(arraytwo[i] >= 0) {
          arraytwo[i] = scan.nextInt();
          }
          }
          System.out.println("First Array:\n");
          System.out.print(arrayone[i] + " ");
          break;
          }
          }
     }
}

虽然还没有完成,但代码在运行时需要有这样的输出:

First Array:

(any entered integers for arrayone in numerical order)

Second Array:

(any entered integers for arraytwo in numerical order)

Merged Array:

(combined integers from arrayone and arraytwo in numberical order)

我的麻烦是这样的:到目前为止,我已将它设置为只输出arrayone中的内容,除了它只输出一个数字:你输入的最后一个....这是一个负数我不会&# 39;想要存储。

我能提供的任何指导都很棒。谢谢!

2 个答案:

答案 0 :(得分:1)

你那里有很多curley braces ...我已经剥离了可能有害的牙箍,并给你的代码适当的缩进。更正了循环和退出条件。

您需要处理格式并跟踪打开和关闭括号,括号等。这将使您的代码更容易让其他人遵循并更容易调试。你不要在你分开的每一段代码周围放置大括号。它们只应在特定的地方使用。

class Main
{

    public static void main (String[] args) throws IOException
    {
        Scanner scan = new Scanner(System.in);

        int[] arrayone = new int[10000];
        int[] arraytwo = new int[10000];

        System.out.println("Enter integers ");
        int userNumber;
        for (int i = 0; i < arrayone.length; i++)
        {
            arrayone[i] = scan.nextInt();
            if (arrayone[i] < 0)
            {
              break;
            }
        }

        System.out.println("\nEnter the values for the second array, up to 10000 values, enter a negative number to quit");
        for (int i=0; i<arraytwo.length; i++)
        {
            arraytwo[i] = scan.nextInt();
            if (arraytwo[i] < 0)
            {
                break;
            }
        }


        System.out.println("First Array:\n");
        for (int i=0; i< arrayone.length; i++)
        {
            System.out.print(arrayone[i] + " ");
        }


        System.out.println("Second Array:\n");
        for (int i=0; i< arraytwo.length; i++)
        {
            System.out.print(arraytwo[i] + " ");
        }

    }
}

我没有为你完成所有的工作,但你现在应该在一个更好的地方自己解决其余问题。

答案 1 :(得分:0)

您需要在循环内打印。该值仅打印一次,因为它位于循环外部,因此它只打印一次。

 while(arraytwo[i] >= 0) {
          arraytwo[i] = scan.nextInt();
System.out.print(arrayone[i] + " ");
          }