当前位置: 首页 > 知识库问答 >
问题:

如何删除输出中的空最后一行?

郭意
2023-03-14

我正在努力解决hackerrank的一个特殊问题。

为了解决这个问题,我使用hashmap创建了一个字典,我想用这个人的名字搜索电话号码。如果有一个条目与该名称,打印与名称的号码,否则打印未找到。

public static void main(String []args){
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    Map<String,Integer> map= new HashMap<String,Integer>();
    for(int i = 0; i < n; i++){
        String name = scan.next();
        int phone = scan.nextInt();
        // Write code here

        map.put(name,phone);   
    }
     while(scan.hasNext()){

         String s = scan.next();
        // Write code here

        if(map.containsKey(s)){
        System.out.println(s+"="+map.get(s));
        }
        else{
            System.out.println("Not Found");
        }

    }   
    scan.close();
}

我得到了所需的输出,但有一个额外的空行。例如,当我搜索名称'J'和'K'时,字典中只有J,我的输出是:

J=88888
Not Found
*empty line*

共有2个答案

郭皓
2023-03-14

您正在使用System.out.println打印推杆,因此,在您的消息之后将打印一行新行。

如果不希望出现这种行为,请使用System。出来打印

问候。

夏青青
2023-03-14

第一件事是,由于简单的打字错误,你在网上裁判中得到了错误的答案。你写道:

System.out.println("Not Found");

但是在线法官的要求是未找到。所以,应该是:

System.out.println("Not found");

在这一点上,你会在网上得到正确的答案,这是真的。但是,在这种情况下,无论问题的标题暗示什么,都是一个真正的问题,即,你实际上在最后得到了一条额外的线。也许,在线法官在找到正确答案后忽略了额外的检查。

现在,为了解决这个问题,您的while循环应该是这样的:

while (in.hasNext()) {
    String s = in.next();  
    if (map.containsKey(s))
        System.out.print(s + "=" + map.get(s));
    else
        System.out.print("Not found");
    if (in.hasNext())
        System.out.println();
}

通过使用if语句进行额外检查,您将在除最后一行之外的所有输出之后打印新行。

 类似资料:
  • 问题内容: 我有以下代码: 控制台输出看起来像 我想在用户按下后删除文本。退格键无法做到。 问题答案: 这将在大多数unix和Windows终端中正常工作…它使用非常简单的ANSI转义。 请注意,在Windows上,您可能需要使用以下http://www.windowsnetworking.com/kbase/windowstips/windows2000/usertips/miscellaneo

  • 我有一个主类,该类将输出打印到控制台。。。 例如,如果行中包含A和B,我需要打印“Apple” 我将在主方法中通过首先实例化该类的对象来实现这一点,即。 代码示例:

  • 我一直在使用pandas导入CSV,但每次尝试使用它时,我都会得到一个随机的额外行,这会导致代码中的错误。我如何完全抹去这一行? 我用来导入它的代码是:import itertools import copy import networkx as nx import pandas as pd import Matplotlib.pyplot as plt import csv 我的表是一个简单的I

  • 我是新来的希望你们能帮我。。。 我是java编程的初学者,我想我对这个问题有点不知所措。 我的程序运行得很好,除了一个让我恼火的小细节。我有一个JTable,第一列有一个按钮,可以从表中删除这一行。它工作得很好,除了当我试图删除表的最后一行时,按钮停留在那里,然后表冻结,我无法删除任何行,因为我收到了一个“越界异常”。但是,当我使用命令表时。getRowCount()); 在删除该行之前和之后,表

  • 我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。 我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。 下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。

  • 问题内容: 我试图弄清楚如何禁止在stdout上显示用户输入。 后跟任何打印语句将保留用户键入的内容。不会显示用户键入的内容,但会保留“ Password:”提示。 为了解决这个问题,我只想删除最后一行(这也会从行尾删除换行符)。 问题答案: 您可能可以使用VT100控制代码执行所需的操作。 可能是这样的: