【问题标题】:Print specific characters打印特定字符
【发布时间】:2018-03-21 12:12:00
【问题描述】:

我有一个字符串输入,该输入有一个团队名称和分数,由一个空格分隔。例如 bb 3 , teamd 5 获胜者应该是 teamd

为了获得得分最高的获胜团队,我正在做以下事情:

Scanner scanner = new Scanner(System.in);
    int cases = scanner.nextInt();

    printWinnerTeam(cases);



}

public static void printWinnerTeam(int cases) {
    Scanner scanner = new Scanner(System.in);
    String str = "";
    String winnerTeam = "";
    int winnerScore = 0, countedChar = 0;

    for (int i = 0; i < cases; i++) {
        str += scanner.nextLine();
    }
    char[] arr = str.toCharArray();
    for (int i = 0; i < arr.length; i++) {
        countedChar++;
        if (arr[i] == ' ') {
            if (str.charAt(i + 1) > winnerScore) {
                winnerTeam = "";
                winnerScore = (int) str.charAt((int) i + 1);
                for (int j = 0; j < countedChar; j++) {
                    winnerTeam += str.charAt(j);
                }
                countedChar = 0;
            } else {
                //winnerTeam = "";
                countedChar = 0;
            }
        }
    }
    System.out.println(winnerTeam);
}

但这不是完美的工作,它是打印有线结果,如何使其按预期工作?

【问题讨论】:

  • 如何简化它,但只是随手处理。如果输入的行得分最大,则存储数字和团队名称 - 使用 String.split(",");
  • 我没有尝试过你的代码,但我想一个大问题是str += scanner.nextLine(); 的串联新行将直接附加到前一行的末尾number
  • @ScaryWombat 确实是的,我会跳出框框思考问题,+= 的问题,谢谢,请随时接受答案

标签: java string for-loop input char


【解决方案1】:

我还没有尝试过你的代码,但我想一个大问题是str += scanner.nextLine(); 的串联新行将直接附加到前一行编号的末尾

看看这个

    Scanner sc = new Scanner(System.in);
    int bestScore = Integer.MIN_VALUE;
    String team = "Nothing entered";
    System.out.println("how many teams");
    int count = sc.nextInt();
    sc.nextLine();
    while (count-- > 0) {
        System.out.println("Entered team,score");

        String line = sc.nextLine();
        String arr [] = line.split(" ");
        // check size - TBD
        if (Integer.parseInt(arr[1]) > bestScore) {
            bestScore = Integer.parseInt(arr[1]);
            team = arr[0];
        }
    }

    System.out.println("nest team is " + team + " with a score of " + bestScore);

【讨论】:

  • @AndyTurner 谢谢,我需要清理我的屏幕
  • 打扰一下,您知道here 有什么问题吗,我的代码出现runTimeError 错误?
  • @android 在 Eclipse how many cases 2 how many teams 2 Entered team,score test1 2 Entered team,score me 23 me how many teams 2 Entered team,score test2 4 Entered team,score me_again 23 me_again me me_again 中对我来说很好
【解决方案2】:

如果我必须这样做,我会这样做:

import java.util.*;
        public class winner {
           public static void main (String args []) {
            Scanner scanner = new Scanner(System.in);
            int cases = scanner.nextInt();

            printWinnerTeam(cases);
        }

   public static void printWinnerTeam(int cases) {
            Scanner scanner = new Scanner(System.in);
            String winnerTeam = "";
            String Team="";
            int winnerScore = 0, score = 0;

            for (int i = 0; i < cases; i++) {
                Team = scanner.next();
                score = scanner.nextInt();
                if(score > winnerScore){
                 winnerTeam = Team;
                 winnerScore = score;
                }

            }
            System.out.println("Winner team" + winnerTeam + "Score:" + winnerScore);
        }
        }

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2014-07-27
    相关资源
    最近更新 更多