【问题标题】:How do split string with number elements and white space and store it into an indexable array in Java?如何用数字元素和空格分割字符串并将其存储到Java中的可索引数组中?
【发布时间】:2012-09-22 22:08:38
【问题描述】:

我在获取输入并将其存储到数组中时遇到了一些困难。我正在制作一个证券交易所类型的程序,如果用户想要购买、出售或计算其股票的资本收益,他们将进入该程序。所以基本上输入将被使用扫描仪接收并将其存储到变量中。然后它会调用一个方法,使用参数中的变量并对其进行解析,以便将其拆分为 3 部分。

我的输入将包含一个字符串元素,后跟整数类型值。所以这就是我的输入在程序启动时的样子:

B 20 300

这意味着我将以 300 美元的价格购买 20 股。有没有办法让我将所有这些首先作为一个字符串存储到一个数组中,然后将索引 1 和 2 处的值转换为一个 int?我真的很感激一些帮助,以便我可以开始工作。这就是我一直在尝试做的事情:

import java.util.Scanner;
import java.util.StringTokenizer;

public class StockTran {
static String command = "";
String[] stockParts = null;
CircleArrayQueue Q = null;

public StockTran(String inputCommand) {
    try {
        this.stockParts = this.parseInput(command);
        System.out.println(stockParts[0]);
        System.out.println(stockParts[1]);
        System.out.println(stockParts[2]);
    } catch (Exception e) {
        e.printStackTrace();
    }
}


private String[] parseInput(String inputLine) throws Exception {
    String[] temp = inputLine.split("\\s");
    return temp;
}

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

    System.out.println("Enter 'B' to purchase share, 'S' to sell share, 'C' for capital gain, or 'Q' to quit: ");
    command = reader.next();

    StockTran tran = new StockTran(command);
}

}

【问题讨论】:

  • 您可以在构造函数中打印数组时这样做..
  • 如果我尝试这样做,那么它会给我以下错误:java.lang.ArrayIndexOutOfBoundsException: 1 at StockTran.(StockTran.java:19) at StockTran.main(StockTran.java :38)
  • 它确实打印了字母 B,它只会在 B 之后给我一个错误。

标签: java arrays data-structures queue


【解决方案1】:

您需要阅读完整的一行以传递给您的构造函数以拆分为元素:

command = reader.nextLine();

作为

command = reader.next(); 

只会读取第一个令牌。

【讨论】:

  • 哦,好吧,那肯定会让事情相应地工作。感谢您的帮助! :)
【解决方案2】:
import java.util.Scanner;
public class tcs {

/**
 * @param args
 */
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String customerDetails = scanner.nextLine();
    String string[]=customerDetails.split("\\s");
    for (int i = 0; i < string.length; i++) {
        System.out.println(string[i]);
    }
    //System.out.println(string[0]);
    //System.out.println(string[1]);
    //System.out.println(string[2]);
    int total=Integer.parseInt(string[1])*(Integer.parseInt(string[2]));
    System.out.println(total);
    }
}

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多