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

我目前正在学习如何在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<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不客气,请访问如果你对这些答案感到满意,请点击此处,祝你好运:)