1

質問は次のとおりです。

一連の正の整数を読み取り、25 未満のすべての整数の積と 25 以上のすべての整数の合計を書き出す Java プログラムを作成します。センチネル値として 0 を使用します。

ユーザーが入力を配列に追加できるようにする方法を理解できました。しかし、コードを if ステートメントと統合して、タスクを実行する完全に機能するプログラムを作成する方法を見つけることができませんでした。これが今の私の調査結果です。

import java.util.*;
public class UserInput {
    public static void main(String[] args) {

        List<String> list = new ArrayList<String>();
        Scanner stdin = new Scanner(System.in);

        do {
            System.out.println("Current list is " + list);
            System.out.println("Add more? (y/n)");
            if (stdin.next().startsWith("y")) {
                System.out.println("Enter : ");
                list.add(stdin.next());
            } else {
                break;
            }
        } while (true);

        System.out.println("List is " + list);
        String[] arr = list.toArray(new String[0]);
        System.out.println("Array is " + Arrays.toString(arr));
    }
}

配列に入力を読み取らせ、25 未満のすべての数値の積と 25 を超えるすべての数値の合計を見つけるにはどうすればよいでしょうか。

解決策: 以下のボランティアによって投稿された回答を何時間も微調整した結果、自分に合った解決策を見つけることができました。誰かが役に立つと思った場合に備えて、ここに投稿しました。

import java.util.*;
  public class UserInput {
  public static void main(String[] args) {

List<Integer> list = new ArrayList<Integer>();
Scanner stdin = new Scanner(System.in);
do{
    System.out.println("Current list is : " + list);
    System.out.println("Enter number : ");
    int  entered = stdin.nextInt();
    if(entered == 0){
        int sum = 0,product = 1;
        for(Integer number : list){
            if(number<25){
                sum += number; 
            }else if(number >= 25){
                product *= number;
            }
        }
        System.out.println("sum : " + sum);
        System.out.println("product : " + product);
    }else{
        list.add(entered);
        int sum = 0,product = 1;
        for(Integer number : list){
            if(number<25){
                sum += number; 
            }else if(number >= 25){
                product *= number;
            }
        }
        System.out.println("sum : " + sum);
        System.out.println("product : " + product);
    }           
    System.out.println("Add more numbers to the list ? (Y/N) : ");

    } while(stdin.next().equalsIgnoreCase("y"));
}
}

みなさん、投稿やコメントをありがとうございます!本当に役に立ちました!:)

4

2 に答える 2

0
Class Main {

    public static void main(String[] args) {

        List<Integer> numsGe25 = new ArrayList<>();  // Store numbers greather than or equal to 25 

        List<Integer> numsLt25 = new ArrayList<>();  // Store numbers less than 25


        Scanner in = new Scanner(System.in);
        int num = -1;
        // Reads a number from the standard input till the 0 value is inserted. 0 is the sentinel
        while ((num = in.nextInt()) != 0) {  
            if (num >= 25) {
                numsGe25.add(num)   
            } else {
                numsLt25.add(num);
            }
        }
        System.out.println("sum of numbers >= 25: " + sum(numsGe25));
        System.out.println("product of numbers < 25: " + product(numsLt25));
    }

    private static int sum(List<Integer> numbers) {
        int result = 0;
        for (Integer num : numbers) {
            result += num;
        }
        return result; 
    }

    private static int product(List<Integer> numbers) {
        int result = 1;
        for (Integer num : numbers) {
            result *= num;
        }
        return result;
    }
}
于 2013-05-05T16:53:36.457 に答える