我有一个主类,该类将输出打印到控制台。。。
例如,如果行中包含A和B,我需要打印“Apple”
我将在主方法中通过首先实例化该类的对象来实现这一点,即。
VeggiesAndFruits myVeg1 = new VeggiesAndFruits(AB);
VeggiesAndFruits myVeg2 = new VeggiesAndFruits(A);
System.out.println(myVeg1.getDescription());
System.out.println(myVeg2.getDescription());
代码示例:
public class VeggiesAndFruits
{
String line;
public VeggiesAndFruits(String line)
{
this.line = line;
}
public String getDescription()
{
String description = "";
if(line.contains("A"))
{
description += "Apple & ";
}
if(line.contains("B"))
{
description += "Banana & ";
}
if(line.contains("C"))
{
description += "Carrot & ";
return description;
}
}
您可以尝试在字符串上使用int lastIndexOf(int ch)
方法。
例如:
int index=description.lastIndexOf('&');
然后可以使用此索引从主字符串中提取一个子字符串,以删除最后一个
String newDescription = description.substring(0, index);
在Java8中,使用StringJoiner
:
public String getDescription() {
StringJoiner description = new StringJoiner(" & ");
if (line.contains("A"))
description.add("Apple");
if (line.contains("B"))
description.add("Banana");
if (line.contains("C"))
description.add("Carrot");
return description.toString();
}
在Java 5中,使用StringBuilder
和if
语句:
public String getDescription() {
StringBuilder description = new StringBuilder();
if (line.contains("A")) {
description.append("Apple");
}
if (line.contains("B")) {
if (description.length() != 0)
description.append(" & ");
description.append("Banana");
}
if (line.contains("C")) {
if (description.length() != 0)
description.append(" & ");
description.append("Carrot");
}
return description.toString();
}
或者,正如kaya3所指出的:
public String getDescription() {
StringBuilder description = new StringBuilder();
String sep = "";
if (line.contains("A")) {
description.append(sep).append("Apple");
sep = " & ";
}
if (line.contains("B")) {
description.append(sep).append("Banana");
sep = " & ";
}
if (line.contains("C")) {
description.append(sep).append("Carrot");
sep = " & ";
}
return description.toString();
}
或者问题代码试图做到这一点的方式:
public String getDescription() {
StringBuilder description = new StringBuilder();
if (line.contains("A"))
description.append("Apple & ");
if (line.contains("B"))
description.append("Banana & ");
if (line.contains("C"))
description.append("Carrot & ");
if (description.length() != 0)
description.setLength(description.length() - 3); // remove final " & "
return description.toString();
}
测验
System.out.println(new VeggiesAndFruits("").getDescription());
System.out.println(new VeggiesAndFruits("A").getDescription());
System.out.println(new VeggiesAndFruits("B").getDescription());
System.out.println(new VeggiesAndFruits("C").getDescription());
System.out.println(new VeggiesAndFruits("AB").getDescription());
System.out.println(new VeggiesAndFruits("AC").getDescription());
System.out.println(new VeggiesAndFruits("BC").getDescription());
System.out.println(new VeggiesAndFruits("CBA").getDescription());
输出(以上所有4种解决方案相同)
Apple
Banana
Carrot
Apple & Banana
Apple & Carrot
Banana & Carrot
Apple & Banana & Carrot
如果使用Java8,我建议在这里使用StringJoiner
。正如Javadoc所说,StringJoiner
用于构造由分隔符分隔的字符序列。喜欢
public String getDescription() {
StringJoiner sj = new StringJoiner(" & ");
if (line.contains("A")) {
sj.add("Apple");
}
if (line.contains("B")) {
sj.add("Banana");
}
if (line.contains("C")) {
sj.add("Carrot");
}
return sj.toString();
}
在早期版本的Java(5)中,可以使用StringBuilder
(以及kaya3提到的“胶水”)。
public String getDescription() {
StringBuilder sb = new StringBuilder();
String glue = "";
if (line.contains("A")) {
sb.append("Apple");
glue = " & ";
}
if (line.contains("B")) {
sb.append(glue);
sb.append("Banana");
glue = " & ";
}
if (line.contains("C")) {
sb.append(glue);
sb.append("Carrot");
}
return sb.toString();
}
在Java5之前,您可以使用StringBuffer
public String getDescription() {
StringBuffer sb = new StringBuffer();
String glue = "";
if (line.contains("A")) {
sb.append("Apple");
glue = " & ";
}
if (line.contains("B")) {
sb.append(glue);
sb.append("Banana");
glue = " & ";
}
if (line.contains("C")) {
sb.append(glue);
sb.append("Carrot");
}
return sb.toString();
}
我一直在使用pandas导入CSV,但每次尝试使用它时,我都会得到一个随机的额外行,这会导致代码中的错误。我如何完全抹去这一行? 我用来导入它的代码是:import itertools import copy import networkx as nx import pandas as pd import Matplotlib.pyplot as plt import csv 我的表是一个简单的I
我正在努力解决hackerrank的一个特殊问题。 为了解决这个问题,我使用hashmap创建了一个字典,我想用这个人的名字搜索电话号码。如果有一个条目与该名称,打印与名称的号码,否则打印未找到。 我得到了所需的输出,但有一个额外的空行。例如,当我搜索名称'J'和'K'时,字典中只有J,我的输出是:
我是新来的希望你们能帮我。。。 我是java编程的初学者,我想我对这个问题有点不知所措。 我的程序运行得很好,除了一个让我恼火的小细节。我有一个JTable,第一列有一个按钮,可以从表中删除这一行。它工作得很好,除了当我试图删除表的最后一行时,按钮停留在那里,然后表冻结,我无法删除任何行,因为我收到了一个“越界异常”。但是,当我使用命令表时。getRowCount()); 在删除该行之前和之后,表
我将在main方法中这样做,首先实例化该类的一个对象,即。 代码示例:
我在试着做个背景效果。在按键时,它创建一个div并在半秒后淡出。每次按下一个键,它都会创建一个具有新ID的新div。我如何在每个div被触发后半秒内删除它? 我忘记提了,我有一个函数可以将缩短为。我没有使用jQuery。 这是我目前为止的代码。
问题内容: 对于此函数,运行后,输出将为2,5,7 .... 9,我的问题是如何删除最后一个逗号? 问题答案: 我会在一开始打印逗号,像这样-