有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将输入转换为多个Int/Var

我在做ints/VAR时遇到了一个问题。 虽然知道有多少输入数字,但我可以编写如下代码:

Scanner in = new Scanner(System.in);
int[] vars = new int[8];
for(int z = 0; z < vars.length; z++)
  vars[z] = in.nextInt();

但问题是,我不知道会有多少输入。 简而言之,任务是向买家推荐他们应该购买的产品,所以前两个输入数字将是有多少产品和有多少客户。下一个X输入将是产品的价格,下一个Y输入将是客户拥有的金额。所有这些都必须在同一个输入中

简而言之:我需要编写一个代码,根据输入数的多少自动命名ints的输入

我可以根据行来命名输入吗? 例如:

input
5 5
1 5 8 11 12
10 5 9 12 13

编辑: 还有人(@Noixes/@Raju Sharma)能给我一点建议吗?我如何开始管理这些输入,为每个客户找到最佳解决方案?所以每个客户都会购买他的钱或更少的物品(最接近他的钱)?在一位客户购买物品后。该商品仍将以相同的价格在商店出售


共 (2) 个答案

  1. # 1 楼答案

    List<Integer> list = new ArrayList<>();
    
    while(scanner.hasNextInt()){
        list.add(scanner.nextInt());
    }
    
  2. # 2 楼答案

    如果您使用的是Java8,那么下面的代码将在单行中帮助您,而不知道数组的大小

     Scanner in = new Scanner(System.in);
     int[] productsAndCustomers = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
     int[] productsPrices = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray(); 
     int[] customersMoney = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
    System.out.println(Arrays.toString(productsAndCustomers));
    System.out.println(Arrays.toString(productsPrices));
    System.out.println(Arrays.toString(customersMoney));
    

    输入:

    5 5

    1 5 8 11

    10 5 9 12

    数组中的输出列表:

    [5, 5]

    [1, 5, 8, 11]

    [10, 5, 9, 12]