请问这段代码有什么问题?为什么不能显示查找的位置。

擎铭 2012-10-23 04:06:50
import java.util.Scanner;

public class StringExplorer {

/**
* @param args
*/
public static void main(String[] args) {

String wenzi="0";
String word;
String[] shu= new String[wenzi.length()];
Scanner input = new Scanner(System.in);
System.out.println("请输入一段文字:");
wenzi = input.next();

System.out.println("请输入要查询的字符:");
word = input.next();
System.out.print(word+"出现的位置是:");
for (int i = 0; i < shu.length; i++) {
shu[i]=wenzi.substring(i,i+1);
}
for (int i = 0; i < shu.length; i++) {
if (shu[i].equals(word)) {
System.out.println((i+1)+"\t");
}
}
}

}
...全文
164 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
好吧,膜拜2楼大神,测试了下其他的也同,不过只能查字符,对字符串无力,2楼全面点
墙角在唱歌 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

修改了一下,供参考,代码如下:

Java code
import java.util.Scanner;
public class StringExplorer
{
/**
* @param args
*/
public static void main(String[] args)
{
String wenzi="0";
……
[/Quote]

楼主说的正确
  • 打赏
  • 举报
回复
额,我发现自己错了,编译不会出问题,惭愧啊,再跟楼上几位大神学习下
  • 打赏
  • 举报
回复
String[] shu= new String[wenzi.length()];
这里类型不匹配,wenzi.length()这个返回值是int型,而new String[]里要的是String类型,其他的我再看看
Giberson1 2012-10-23
  • 打赏
  • 举报
回复
建议你重写代码,这样的代码养成了习惯不好。
会影响你的编码能力。

不过你要让这个程序跑通,就将String[]改为 char[].
Giberson1 2012-10-23
  • 打赏
  • 举报
回复
你的问题出在,这里

String[] shu= new String[wenzi.length()];

你自己可以打印下,shu.length(),一直是1.
然后你接下来又犯了一个错误,

for (int i = 0; i < shu.length; i++) {
shu[i]=wenzi.substring(i,i+1);
}

我知道,你是想把wenzi全部一个字符存一个数组单元。
但是你用的是String[],字符串数组,而不是char[],
所以,你每次都是将wenzi放入shu[0]中。
halfsuccess 2012-10-23
  • 打赏
  • 举报
回复
或者这样修改代码:


import java.util.Scanner;

public class B {

/**
* @param args
*/
public static void main(String[] args) {

String wenzi = "0";
char word;
Scanner input = new Scanner(System.in);
System.out.println("请输入一段文字:");
wenzi = input.next();
char[] shu = new char[wenzi.length()];//注意在输入了字符串之后在动态分配数组长度

System.out.println("请输入要查询的字符:");
word = input.next().charAt(0);
System.out.print(word + "出现的位置是:");
for (int i = 0; i < wenzi.length(); i++) {
shu[i] = wenzi.charAt(i);
}
for (int i = 0; i < shu.length; i++) {
if (shu[i] == word) {
System.out.println((i + 1) + "\t");
}
}
}

}
霸王龙的日常 2012-10-23
  • 打赏
  • 举报
回复
import java.util.Scanner;

public class StringExplorer {

/**
* @param args
*/
public static void main(String[] args) {

String wenzi="0";
String word;
/*
* lz,请看这里,shu的长度并不是你输入字符串的长度,
* 而是你在上面初始化的值,长度永远是1;
* 因而,你的代码只有当你要查的字符是和你你输入的第一个字符相匹配时,则会输出"*出现的位置是:1";
*
* 要改的话,就得把这句:String[] shu= new String[wenzi.length()];
* 写在你的输入语句之后,那么的shu的length将是你所要的字符串长度。
*/

// String[] shu= new String[wenzi.length()];
Scanner input = new Scanner(System.in);
System.out.println("请输入一段文字:");
wenzi = input.next();
//代码加到这里
String[] shu= new String[wenzi.length()];
System.out.println("请输入要查询的字符:");
word = input.next();
System.out.print(word+"出现的位置是:");
for (int i = 0; i < shu.length; i++) {
shu[i]=wenzi.substring(i,i+1);
}
for (int i = 0; i < shu.length; i++) {
if (shu[i].equals(word)) {
System.out.println((i+1)+"\t");
}
}
}

}
nmyangym 2012-10-23
  • 打赏
  • 举报
回复
修改了一下,供参考,代码如下:

import java.util.Scanner;
public class StringExplorer
{
/**
* @param args
*/
public static void main(String[] args)
{
String wenzi="0";
String word;
String[] shu;
Scanner input = new Scanner(System.in);
System.out.println("请输入一段文字:");
wenzi = input.next();

System.out.println("请输入要查询的字符:");
word = input.next();

shu= new String[wenzi.length()-(word.length()-1)];//注意这个长度.
System.out.print(word+"出现的位置是:\n");
for (int i = 0; i < shu.length; i++)
{
shu[i]=wenzi.substring(i,i+word.length());//注意取得的子串长
}
for (int i = 0; i < shu.length; i++)
{
if (shu[i].equals(word))
{
System.out.println((i+1)+"\t");
}
}
}
}

halfsuccess 2012-10-23
  • 打赏
  • 举报
回复
for (int i = 0; i < shu.length; i++) {
shu[i]=wenzi.substring(i,i+1);
}
改为:
for (int i = 0; i < weizhi.length; i++) {
shu[i]=wenzi.substring(i,i+1);
}

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧