【问题标题】:Converting input to multiple ints / vars将输入转换为多个整数/变量
【发布时间】:2018-05-13 05:04:25
【问题描述】:

我在制作 ints / vars 时遇到了问题。 在知道有多少个输入数字的同时,我可以编写如下代码:

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 输入将是客户拥有的金额。所有这些都必须在同一个输入中。

简而言之:我需要编写一个代码,根据输入数字的数量自动将输入命名为整数。

我可以根据线路命名输入吗? 示例:

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

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

【问题讨论】:

  • 到目前为止您尝试了什么?是的,通过逐行阅读
  • 到目前为止还没有尝试过任何东西:/我从未编写过包含 X 个输入整数的代码:/
  • 我会以ArrayList 开头,而不是Array,因为Array 的大小固定。
  • 我认为您在示例中遗漏了两个数字?如果第一个输入告诉您有多少产品 .. 和它的 5 你应该输入 5 以及 .. 而不是 4 就像你做的那样
  • 感谢@Noixes 已修复。

标签: java variables input int


【解决方案1】:

如果您使用的是 java 8,那么下面的代码将在不知道数组大小的情况下为您提供单行帮助。

 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]

【讨论】:

    【解决方案2】:

    我知道有人已经这样做了,但是对于初学者来说有点复杂..所以我做了一个更长的版本,逐步计算。 :)

    Scanner scan = new Scanner(System.in);
            String[] sizes = scan.nextLine().split(" ");
    
            // Define Arrays with actual lengths
            int[] productCosts = new int[Integer.parseInt(sizes[0])];
            int[] customerMoney = new int[Integer.parseInt(sizes[1])];
    
            // Get ProductCosts
            String[] inputProductCosts = scan.nextLine().split(" ");
    
            // Set Int-Array of ProductCosts
            for(int i = 0; i < productCosts.length; i++) {
                productCosts[i] = Integer.parseInt(inputProductCosts[i]);
            }
    
            // Get CustomerMoney
            String[] inputCustomerMoney = scan.nextLine().split(" ");
    
            // Set Int-Array of CustomerMoney
            for(int i = 0; i < customerMoney.length; i++) {
                customerMoney[i] = Integer.parseInt(inputCustomerMoney[i]);
            }
    
            scan.close();
    

    【讨论】:

      【解决方案3】:
      List<Integer> list = new ArrayList<>();
      
      while(scanner.hasNextInt()){
          list.add(scanner.nextInt());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        • 2012-06-19
        • 1970-01-01
        • 2013-11-17
        • 2013-09-28
        • 1970-01-01
        • 2010-11-24
        相关资源
        最近更新 更多