Como posso contar o número de caracteres em um valor da cadeia, dentro de uma matriz, e depois compará-lo com os outros a encontrar o caminho mais longo?

mightymorphinParkRanger:

Abaixo está o que eu tenho agora. A primeira coisa que eu só preciso saber é como posso verificar o número de caracteres de um texto, dentro de uma matriz, e depois verificar que, contra todas as outras entradas e só puxar o maior. A pergunta que eu estou lidando com:

Escreva um programa que lê nomes e anos de nascimento do usuário até que uma linha vazia é inserido. O nome e ano de nascimento são separadas por uma vírgula.

Depois que o programa imprime o nome mais longo e a média dos anos de nascimento. Se vários nomes são igualmente mais longo, você pode imprimir qualquer um deles. Você pode supor que o usuário digita pelo menos uma pessoa. Exemplo de saída

sebastian, 2017 Lucas, 2017 lírio de 2017 hanna de 2014 gabriel de 2009

nome mais longo: Médio sebastian dos anos de nascimento: 2014,8

import java.util.Scanner;
public class Test112 {

    //Asks the user for input and will print out who is the oldest


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

        int checkVal = 0;
        String checkName = null;

        System.out.println("Provide a name and age in this format: name,#");

        while (true) {

            //The unique thing about this code, is each input is a separate array that is not put in memory
            //You just use the array system to pull data of the values entered at that specific time
            String userIn = scanner.nextLine();

            if (userIn.equals("")) {
                break;
            } 

            //Here we get the info from the user, then split it
            String[] valArray = userIn.split(",");

            //This now uses the variable to check which value of arguments entered is the greatest
            //It'll then assign that value to the variable we created
            **if (checkVal < Integer.valueOf((int)valArray[0].length) {**
                //We need the checkVal variable to be a constant comparison against new entries
                checkVal = Integer.valueOf(valArray[1]);
                //This pulls the name of the value that satisfies the argument above
                checkName = valArray[0];
            }
        }

        System.out.println("Name of the oldest: " + checkName);
    scanner.close();

    }
}
Arvind Kumar Avinash:

Como posso contar o número de caracteres em um valor da cadeia, dentro de uma matriz, e depois compará-lo com os outros a encontrar o caminho mais longo?

Fazê-lo da seguinte forma:

if (checkVal < valArray[0].length()) {
    checkVal = valArray[0].length();
    checkName = valArray[0];
}

Note-se que length()é usado para encontrar o comprimento de um String.

Alguns outros pontos importantes:

  1. Você também precisa de uma variável para armazenar a soma de todos os anos de nascimento de modo que você pode calcular sua média. Alternativamente, você pode calcular a média em execução.
  2. Apare as entradas (nome e nascimento ano) antes de realizar qualquer operação sobre eles.
  3. Não feche o Scannerpara System.in.

Dada a seguir é o programa completo incorporando as notas:

import java.util.Scanner;

public class Main {

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

        int checkVal = 0;
        String checkName = "", name, birthYearStr;
        int sum = 0, count = 0;

        while (true) {
            System.out.print("Provide a name and age in this format: name,#");
            String userIn = scanner.nextLine();

            if (userIn.equals("")) {
                break;
            }
            String[] valArray = userIn.split(",");
            name = valArray[0].trim();
            birthYearStr = valArray[1].trim();
            if (valArray.length == 2 && birthYearStr.length() == 4) { // Birth year should be of length 4
                try {
                    sum += Integer.parseInt(birthYearStr);
                    if (checkVal < name.length()) {
                        checkVal = name.length();
                        checkName = name;
                    }
                    count++;
                } catch (NumberFormatException e) {
                    System.out.println("Birth year should be an integer. Please try again.");
                }
            } else {
                System.out.println("This is an invalid entry. Please try again.");
            }
        }

        System.out.println("Longest name: " + checkName);
        System.out.println("Average of birth years: " + (sum / count));
    }
}

Uma corrida de amostra:

Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#lucas,2017
Provide a name and age in this format: name,#lily,2017
Provide a name and age in this format: name,#hanna,2014
Provide a name and age in this format: name,#gabriel,2009
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2014

Outra corrida de amostra:

Provide a name and age in this format: name,#sebastian,201
This is an invalid entry. Please try again.
Provide a name and age in this format: name,#sebastian,hello
This is an invalid entry. Please try again.
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#lucas,2017
Provide a name and age in this format: name,#lily,2017
Provide a name and age in this format: name,#hanna,2014
Provide a name and age in this format: name,#gabriel,2009
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2014

Outra corrida de amostra:

Provide a name and age in this format: name,#hello,2018,sebastian,2017
This is an invalid entry. Please try again.
Provide a name and age in this format: name,#hello,2018
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2017

Outra corrida de amostra:

Provide a name and age in this format: name,#sebastian,rama
Birth year should be an integer. Please try again.
Provide a name and age in this format: name,#sebastian,12.5
Birth year should be an integer. Please try again.
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#abcdefghi,2018
Provide a name and age in this format: name,#rama,2009
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2014

Outra corrida de amostra:

Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#lucas,2017
Provide a name and age in this format: name,#lily   ,          2017
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2017

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=359720&siteId=1
Recomendado
Clasificación