我的代码中缺少什么来满足我的程序的所有要求?

时间:2021-05-20 20:44:33

I have to design and implement a program that counts the number of integer values from user input. Produce a table listing the values you identify as integers from the input. Provide the sum and average of the numbers.This is what I have so far.

我必须设计并实现一个程序,该程序计算用户输入的整数值的数量。生成一个表,列出您从输入中标识为整数的值。提供数字的总和和平均值。这是我到目前为止所拥有的。

public class Table {
public static void main(String [] strAng) {
    int sum = 0;
    double average;
    int min = 1;
    int max = 10;

    for(int number = min;
    number <= max; ++number) {
        sum += number;
    }



    System.out.print("Sum:" +sum);
    System.out.print("Average:" +average);

2 个解决方案

#1


1  

You have not get an input from user and also you do nothing to make average.

您没有收到用户的输入,也没有做任何平均值的事情。

Try this code, and if you have other requirements, update the question.

尝试此代码,如果您有其他要求,请更新问题。

    int sum = 0;
    double average;
    Scanner userInputScanner = new Scanner(System.in);

    System.out.println("Please enter the integers with space between each two integer: ");
    String inputNumberFilePath = userInputScanner.nextLine();

    String[] numStrArray = inputNumberFilePath.split(" ");

    for (String string : numStrArray) {
        sum += Integer.parseInt(string);
    }

    average = (double) sum / (double) numStrArray.length;
    System.out.println("Sum: " + sum);
    System.out.println("Average: " + average);

output sample:

Please enter the integers with space between each two integer: 
10 20 30 40 50
Sum: 150
Average: 30.0

#2


0  

Im not sure if this is exactly what you are looking for but it could be. With this code you enter a string with integers "in it". The integers get extracted, counted and have sum & average operations performed on what is basically a bar graph. Hope this helps.

我不确定这是不是你正在寻找的,但它可能是。使用此代码,您输入一个整数“在其中”的字符串。整数被提取,计数并且在基本上是条形图上执行求和和平均操作。希望这可以帮助。

import java.util.*;
public class Table {

This part is used to read ANY user input Strings included.

此部分用于读取包含的任何用户输入字符串。

public static String getInput(){
    String outPut = "";
    System.out.println("Type something to parse: ");
    Scanner sc = new Scanner(System.in);
    if(sc.hasNextLine()) {
        outPut = sc.nextLine();
    }
    return outPut;
}

Here we build our "bar graph":

在这里,我们构建我们的“条形图”:

public static Map<Long,Integer> makeTable(String input){

    Map<Long,Integer> table = new HashMap<>();

    long in = Long.parseLong(input);
    long lastDig = 0;
    int count = 1;
    while(in > 0){

    lastDig = in % 10;
    in /= 10;

    if(!table.containsKey(lastDig)) {
        table.put(lastDig, count);
    } else {
        table.replace(lastDig,count,count+1);
    }

    }

    return table;
}

Here we calculate the sum:

在这里我们计算总和:

public static int sum(Map<Long,Integer> table){
    int sum = 0;
    for (Long key: table.keySet()
         ) {
        sum += (key*table.get(key));
    }
    return sum;
}

Here we get our average:

我们得到平均值:

public static int average(Map<Long,Integer> table){
    int sum = 0;
    int divisor = 0;
    for (Long key: table.keySet()
            ) {
        sum += (key*table.get(key));
        divisor += table.get(key);
    }
    return sum/divisor;
}

public static void main(String[] args){

    int sum = 0;
    double average = 0;
    String input = "";
    input = getInput();
    System.out.println("Unsanitized In: " + input);

Here the integer digits are extracted!

这里提取整数位数!

    input = input.replaceAll("[^\\d.]","");
    Long.parseLong(input);

    System.out.println("Sanitized In: " + input);

    Map<Long,Integer> myMap = makeTable(input);
    System.out.println(myMap);

    System.out.println("Sum:" +sum(myMap));
    System.out.print("Average:" + average(myMap));

}

}

Our example output for: asdf45313ha is:

我们的示例输出:asdf45313ha是:

 Unsanitized In: asdf45313ha
 Sanitized In: 45313
 {1=1, 3=2, 4=1, 5=1}
 Sum:16
 Average:3

#1


1  

You have not get an input from user and also you do nothing to make average.

您没有收到用户的输入,也没有做任何平均值的事情。

Try this code, and if you have other requirements, update the question.

尝试此代码,如果您有其他要求,请更新问题。

    int sum = 0;
    double average;
    Scanner userInputScanner = new Scanner(System.in);

    System.out.println("Please enter the integers with space between each two integer: ");
    String inputNumberFilePath = userInputScanner.nextLine();

    String[] numStrArray = inputNumberFilePath.split(" ");

    for (String string : numStrArray) {
        sum += Integer.parseInt(string);
    }

    average = (double) sum / (double) numStrArray.length;
    System.out.println("Sum: " + sum);
    System.out.println("Average: " + average);

output sample:

Please enter the integers with space between each two integer: 
10 20 30 40 50
Sum: 150
Average: 30.0

#2


0  

Im not sure if this is exactly what you are looking for but it could be. With this code you enter a string with integers "in it". The integers get extracted, counted and have sum & average operations performed on what is basically a bar graph. Hope this helps.

我不确定这是不是你正在寻找的,但它可能是。使用此代码,您输入一个整数“在其中”的字符串。整数被提取,计数并且在基本上是条形图上执行求和和平均操作。希望这可以帮助。

import java.util.*;
public class Table {

This part is used to read ANY user input Strings included.

此部分用于读取包含的任何用户输入字符串。

public static String getInput(){
    String outPut = "";
    System.out.println("Type something to parse: ");
    Scanner sc = new Scanner(System.in);
    if(sc.hasNextLine()) {
        outPut = sc.nextLine();
    }
    return outPut;
}

Here we build our "bar graph":

在这里,我们构建我们的“条形图”:

public static Map<Long,Integer> makeTable(String input){

    Map<Long,Integer> table = new HashMap<>();

    long in = Long.parseLong(input);
    long lastDig = 0;
    int count = 1;
    while(in > 0){

    lastDig = in % 10;
    in /= 10;

    if(!table.containsKey(lastDig)) {
        table.put(lastDig, count);
    } else {
        table.replace(lastDig,count,count+1);
    }

    }

    return table;
}

Here we calculate the sum:

在这里我们计算总和:

public static int sum(Map<Long,Integer> table){
    int sum = 0;
    for (Long key: table.keySet()
         ) {
        sum += (key*table.get(key));
    }
    return sum;
}

Here we get our average:

我们得到平均值:

public static int average(Map<Long,Integer> table){
    int sum = 0;
    int divisor = 0;
    for (Long key: table.keySet()
            ) {
        sum += (key*table.get(key));
        divisor += table.get(key);
    }
    return sum/divisor;
}

public static void main(String[] args){

    int sum = 0;
    double average = 0;
    String input = "";
    input = getInput();
    System.out.println("Unsanitized In: " + input);

Here the integer digits are extracted!

这里提取整数位数!

    input = input.replaceAll("[^\\d.]","");
    Long.parseLong(input);

    System.out.println("Sanitized In: " + input);

    Map<Long,Integer> myMap = makeTable(input);
    System.out.println(myMap);

    System.out.println("Sum:" +sum(myMap));
    System.out.print("Average:" + average(myMap));

}

}

Our example output for: asdf45313ha is:

我们的示例输出:asdf45313ha是:

 Unsanitized In: asdf45313ha
 Sanitized In: 45313
 {1=1, 3=2, 4=1, 5=1}
 Sum:16
 Average:3