Java 程序不替换字母
我目前正在学习如何在Java中使用数组列表,我遇到了一个简单但烦人的问题Java 程序不替换字母,java,Java,我目前正在学习如何在Java中使用数组列表,我遇到了一个简单但烦人的问题 import java.util.*; public class ReplacingALetter { public static void main (String[] args) { String word = "Banana"; List underscore = new ArrayList(word.length()); int i; for (i=0; i<w
import java.util.*;
public class ReplacingALetter
{
public static void main (String[] args)
{
String word = "Banana";
List underscore = new ArrayList(word.length());
int i;
for (i=0; i<word.length(); i++)
{
underscore.add(i, "x");
}
System.out.print(underscore);
System.out.println();
System.out.print("Enter a letter: ");
Scanner sc = new Scanner(System.in);
String letter = sc.nextLine();
if (sc.equals("B"))
{
underscore.set(word.indexOf("B"),"B");
}
System.out.print(underscore);
}
}
import java.util.*;
公共类重播器
{
公共静态void main(字符串[]args)
{
字符串word=“香蕉”;
列表下划线=新的ArrayList(word.length());
int i;
对于(i=0;i你必须检查字母是否等于B,而不是sc等于B
String letter = sc.nextLine();
if (letter.equals("B"))
{
underscore.set(word.indexOf("B"),"B");
}
你必须检查字母是否等于B,而不是sc等于B
String letter = sc.nextLine();
if (letter.equals("B"))
{
underscore.set(word.indexOf("B"),"B");
}
修改此代码段
Scanner sc = new Scanner(System.in);
String letter = sc.nextLine();
if (sc.equals("B"))
{
underscore.set(word.indexOf("B"),"B");
}
到
在前者中,您将Scanner对象与字符串“B”进行比较,后者永远不会相等。
在后者中,它将从标准输入读取的字符串与“B”进行比较。修改此代码段
Scanner sc = new Scanner(System.in);
String letter = sc.nextLine();
if (sc.equals("B"))
{
underscore.set(word.indexOf("B"),"B");
}
到
在前者中,您将Scanner对象与字符串“B”进行比较,后者永远不会相等。
在后者中,它将从标准输入读取的字符串与“B”进行比较。如果(sc.equals(“B”)
此条件总是false
,因为sc
不是类字符串的对象
您应该将代码更改为:
if (letter.equals("B")) {
underscore.set(word.indexOf("B"),"B");
}
if(sc.equals(“B”)
此条件始终为false
,因为sc
不是类String
的对象
您应该将代码更改为:
if (letter.equals("B")) {
underscore.set(word.indexOf("B"),"B");
}
我在您的两个示例中发现的唯一区别是,其中一个使用了if条件:
if (sc.equals("B")) {
underscore.set(word.indexOf("B"),"B");
}
而另一个执行
underscore.set(word.indexOf("B"),"B");
无条件地。您的sc
是一个java.util.Scanner
,“B”
是一个字符串。它们不能相等,因此在您的第一个示例中从未调用过该方法。我在您的两个示例中发现的唯一区别是,其中一个使用了if条件:
if (sc.equals("B")) {
underscore.set(word.indexOf("B"),"B");
}
而另一个执行
underscore.set(word.indexOf("B"),"B");
无条件地。你的sc
是一个java.util.Scanner
,“B”
是一个字符串。它们不能相等,因此在你的第一个示例中从未调用过该方法。你是否在调试器中单步执行了该程序?如果(sc.equals(“B”)
sc
是一个Scanner
,“B”
一个字符串,它们永远不会相等…@jlordo..为什么害怕将其作为答案发布。这是一个完美的答案。@user1985021您可以接受一个答案,它会告诉回答者您发现答案正确且有用。@user1985021您应该阅读并遵循,而不是编辑要解决的标题。您是否在deb中完成了该程序ugger?if(sc.equals(“B”)
-->sc
是一个扫描器,“B”
一个字符串,它们永远不会相等…@jlordo..为什么害怕将其作为答案发布。这是一个完美的答案。@user1985021您可以接受一个答案,它会告诉回答者您发现答案正确且有用。@user1985021您应该阅读并遵循,而不是编辑要解决的标题。嗯,嗯,我明白了…那么我能做些什么呢更改x??如果你注意到我试图创建一种绞刑架,但首先我要做的是让简单的事情开始工作:你应该将条件替换为letter.equals(“B”)
,正如我在编辑后发布的:)嗯,嗯,嗯,我明白了……那么,如果你注意到我试图创建一个类似刽子手的东西,我能做些什么来改变x呢?但首先我要做的是让简单的事情开始工作:你应该将条件替换为字母.equals(“B”)
正如我在编辑后发布的:)哦,天啊,我甚至没有意识到这样一个无辜的错误-谢谢大家:D@user1985021不客气,…如果你对他们满意,请接受这里的任何答案。祝你好运:)哦,天啊,我甚至没有意识到这样一个无辜的错误--谢谢大家:D@user1985021不客气,请访问如果你对这些答案感到满意,请点击此处,祝你好运:)