【问题标题】:Simple Substring Issue简单子字符串问题
【发布时间】:2014-09-15 08:49:23
【问题描述】:

我的老师希望我们在控制台周围移动一个字母“o”。字母“o”已被编码以显示在控制台屏幕的中心。我已经创建了movingRight 和movingDown 方法,但是我很难创建movingLeft 和movingUp 方法。这是我的代码:

import java.util.Scanner;

public class Main {

static String letter = "\n\n\n\n                                                                               O";
String whenmovingup = letter.substring(0, 1);
char whenmovingleft = letter.charAt(letter.length() - 2);

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.print(letter);
    input.nextLine();

    if (input.equals("left")) {
        movingLeft();
    }
    if (input.equals("right")) {
        movingRight();
    }
    if (input.equals("up")) {
        movingUp();
    }
    if (input.equals("down")) {
        movingDown();
    }

}

    public static void movingRight(){
        letter = " " + letter;
    }
    public static void movingDown(){
        letter = "\n" + letter;
    }
    public static void movingLeft(){
        letter.remove(whenmovingleft);
    }
    public static void movingUp(){
        letter.remove(whenmovingup);
    }
}

我在从原始字符串字母中删除 whenmovingfeft 和 whenmovingup 子字符串时遇到问题。它给出了一个错误('The method remove(char) is undefined for the type String'),我不确定需要做什么。

有谁知道如何解决这个问题? 提前感谢所有回复。

【问题讨论】:

  • “它给了我错误” - 你到底遇到了什么错误?请将错误消息编辑到您的问题中。
  • 感谢您的帮助格雷格。弹出窗口告诉我这是使用 String 类型的无效方式。
  • 'String类型的remove(char)方法未定义'
  • removes 没有 remove 方法。如果要从String 中删除一个字符,并且知道要删除的字符的位置,则基本上需要使用substring,一次或两次。
  • 现在出现了一个新错误。 '类型不匹配:无法从 char 转换为 String'

标签: java string methods substring


【解决方案1】:

字符串没有remove 方法。但是,有一个 replace 方法可以做你想做的事。请注意,它不会修改字符串对象,而是返回一个新字符串。所以你会这样做:

letter = letter.replace(whenmovingup, "");

请注意,replace 有两个稍微不同的重载,根据您要求它删除 String 还是 char,它们会做不同的事情。 replace(String, String) 方法替换 一个 出现,而​​ replace(char, char) 替换 所有 出现。您只需要一个,因此将whenmovingleft 声明为String 并适当地初始化它。

【讨论】:

  • 每当我尝试将 whenmovingup 声明更改为字符串时,我都会收到以下错误消息:'Type mismatch: cannot convert from char to String'
  • 是的,正如我提到的,您必须适当地初始化它,使用String 而不是char。你成功地用String 初始化了whenmovingup,所以对whenmovingleft 做类似的事情。
  • 有.stringat函数吗?但是,如果我重写此声明,则会出现与以前相同的错误。
  • 就像上面一行一样,使用letter.substring(...),它返回一个String
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
相关资源
最近更新 更多