Char数组返回整数

时间:2014-08-09 21:09:09

标签: string char

我一直在完成这项练习,而我的输出并不是我所期望的。

(检查子字符串)您可以检查字符串是否是另一个字符串的子字符串 通过在String类中使用indexOf方法。编写自己的方法 这个功能。编写一个程序,提示用户输入两个字符串,和 检查第一个字符串是否是第二个字符串的子字符串。

**我的代码以两种方式妥协于问题的规范:它只能将匹配的子字符串显示为3个字母,并且它不能用于少于4个字母的字符串文字。我错误地开始编写程序而不使用建议的方法indexOf。我的程序的目标(虽然它不应完全偏离任务的目标)是设计一个程序,确定两个字符串是否共享至少三个连续的字母。

该程序的主要错误是它生成数字而不是char字符。我已经通过几个不成功的想法来发现逻辑错误是什么。我首先尝试识别char字符(根据我的理解,在unicode中承保)是否转换为整数,考虑到输出的数字也是三个字母长。没有参考参考,我知道这不是真的。比较java和javac输出的312之间的比较,以及abab和ababbab输出组合219之间的比较.j应该>湾我的下一个想法是输出是我使用的数组的索引。再一次,这不是真的。如果我的推理是真的,那么java和javac之间的比较会输出0。

public class Substring {

  public static char [] array;
  public static char [] array2;

  public static void main (String[]args){

    java.util.Scanner input = new java.util.Scanner (System.in);
    System.out.println("Enter your two strings here, the longer one preceding the shorter one");
    String container1 = input.next();
    String container2 = input.next();
    char [] placeholder = container1.toCharArray();
    char [] placeholder2 = container2.toCharArray();
    array = placeholder;
    array2 = placeholder2;

    for (int i = 0; i < placeholder2.length; i++){
      for (int j = 0; j < placeholder.length; j ++){
        if (array[j] == array2[i]) matcher(j,i);
      }
    }
  }

  public static void matcher(int higher, int lower){
    if ((higher < array.length - 2) && (lower < array2.length - 2))
    if (( array[higher+1] == array2[lower+1]) && (array[higher+2] == array2[lower+2]))
      System.out.println(array[higher] + array[higher+1] + array[higher+2] ); 

  }
}

1 个答案:

答案 0 :(得分:1)

+运算符将short s,charbyte个操作数提升为int s,所以

array[higher] + array[higher+1] + array[higher+2]

的类型为int,而不是类型char,这意味着

System.out.println(...)

绑定到

System.out.println(int)

将其参数显示为十进制数,而不是绑定到

System.out.println(char)

使用PrintStream编码输出给定字符。