如何在两个单独的行中打印输出?

时间:2014-06-13 08:54:51

标签: java

我一直试图在两个单独的行中打印输出,我使用System.out.println()System.out.println("\n"),但我似乎只得到输入的最后一个数字。我猜这个问题一定很容易解决,但我会很感激能够朝着正确的方向努力。

import java.util.Scanner;
import java.util.*;
public class StoreToArray
{
  Scanner input = new Scanner(System.in);
  ArrayList<Integer> al = new ArrayList<Integer>();
  public static void main(String args [])
  {
    //Access method using object reference        

    StoreToArray t = new StoreToArray();
    t.readFromTerminal(); 
  }

  public void readFromTerminal() {
    System.out.println("Read lines, please enter some other character to stop.");
    String in = input.nextLine();
    int check=0;
    while(true){
            check = input.nextInt();
            if(check == 0){ break;}
            al.add(check);
    }

    for (int i : al) {
        System.out.print(i);
    }
  }
}

3 个答案:

答案 0 :(得分:2)

该行:

String in = input.nextLine();

正在捕获您输入的第一个号码,但它永远不会添加到列表中。

所以,如果你输入:

45

40

67

0

输出是:

[40,67](使用System.out.println(al))

或:

4067(使用你的for循环)。

注意,通过输入0来破坏循环,而不是非数字字符,因为第一个输出文本行会建议。

  

读取行,请输入其他字符停止

应该真正阅读

  

读取行,请输入0以停止

<强> [编辑]

正确地向列表添加/显示数字:

1)删除行:

String in = input.nextLine();

2)删除末尾的for循环并替换为:

System.out.println(al);        

答案 1 :(得分:1)

也许使用do do并使用try和catch。因为当你输入一个字符而不是一个数字时,你的程序就会崩溃。

public class StoreToArray
{
    Scanner input = new Scanner(System.in);
    ArrayList<Integer> al = new ArrayList<Integer>();
    public static void main(String args [])
    {
        //Access method using object reference

        StoreToArray t = new StoreToArray();
        t.readFromTerminal();
    }

    public void readFromTerminal() {
        System.out.println("Read lines, please enter some other character to stop.");
        int check=0;
        do{
            try {
                check = input.nextInt();
                if(check != 0)
                  al.add(check);
            }
            catch(InputMismatchException e)
            {
                System.out.println("Failed to convert to int.");
                check = 0;
            }    
        }while(check != 0);

        for (int i : al) {
            System.out.println(i);
        }
    }
}

答案 2 :(得分:1)

如果我理解你的问题,可能就是你需要的

public void readFromTerminal() {
    System.out
            .println("Read lines, please enter some other character to stop.");
    int check = 0;
    while (true) {
        check = input.nextInt();
        al.add(check);
        if (check == 0) {
            break;
        }

    }

    for (int i : al) {
        System.out.print(i+ "\n");
    }
}