(1)public class q{
public static void main(String[] args){
String a[]=new String[The first snow came,how beautiful it was];
count=0;
and=0;
for(int i=1;i<a.length;i++){
if(a.charAt(i)=='t')
count+=1;
else if (a.charAt(i)=='T')
and+=1;
}
System.out.println("t出现的次数:"+count);
System.out.println("T出现的次数:"+and);
}
}
这个程序是求出字符串T出现的次数.. 为什么我使用是字符串数组有问题???
(2)public class zxc{
public static void main(String[] args){
int m[]=new int[10];
m[0]=m[1]=1;
m[2]=m[0]+m[1];
System.out.print(m[0]+" "+m[1]+" "+m[2]+" ");
for (int i=3;i<=10;i++){
m[i]=m[i-1]+m[i-2];
System.out.print(m[i]+" ");
}
}
}
这个程序虽然能显示出结果..但是后面有arrayindexoutofboundsexception异常..显示数组下标超出了10.为什么??
(3)还有一个是三目运算的小问题...为什么我用它来运算就会显示出问题呢?
比如下面一个小程序public class asd{
public static void main(String[] args){
double a=1;
double b=2;
a>b?1:2;
System.out.println("a和b之间的最大数是:"+max(a,b));
}
}
它会提示a>b之间的?出现了问题.....
请各位高手帮我看看....告诉我错误的原因...谢谢啦!!!!!!!!
----------------解决方案--------------------------------------------------------
字符串数组源程序代码问题
public class q{
public static void main(String[] args){
String a=new String("The first snow came,how beautiful it was");//这样可以的
//String a[]=new String[The first snow came,how beautiful it was];
int count=0;
int and=0;
for(int i=1;i<a.length();i++){
if(a.charAt(i)=='t')
count+=1;
else if (a.charAt(i)=='T')
and+=1;
}
System.out.println("t出现的次数:"+count);
System.out.println("T出现的次数:"+and);
}
}
----------------解决方案--------------------------------------------------------
(2)public class zxc{
public static void main(String[] args){
int m[]=new int[10];
m[0]=m[1]=1;
m[2]=m[0]+m[1];
System.out.print(m[0]+" "+m[1]+" "+m[2]+" ");
for (int i=3;i<=10;i++){ //这里的i<=10错了.因为数组的下标是从0-9的.所以应该是i<10
m[i]=m[i-1]+m[i-2];
System.out.print(m[i]+" ");
}
}
}
----------------解决方案--------------------------------------------------------
原代码:
public class q{
public static void main(String[] args){
String a[]=new String[The first snow came,how beautiful it was];
count=0;
and=0;
for(int i=1;i<a.length;i++){
if(a.charAt(i)=='t')
count+=1;
else if (a.charAt(i)=='T')
and+=1;
}
System.out.println("t出现的次数:"+count);
System.out.println("T出现的次数:"+and);
}
}
改过后的代码:
public class q{
public static void main(String[] args){
String s="The first snow came,how beautiful it was";
char a[]=s.toCharArray();
int count=0;
int and=0;
for(int i=1;i<a.length;i++){
if(s.charAt(i)=='t')
count+=1;
else if (s.charAt(i)=='T')
and+=1;
}
System.out.println("t出现的次数:"+count);
System.out.println("T出现的次数:"+and);
}
}
----------------解决方案--------------------------------------------------------
补充:上述程序是在你初始化是有问题!!
----------------解决方案--------------------------------------------------------
public class asd{
public static void main(String[] args){
double a=1;
double b=2;
a>b?1:2; //这个语句是要返回一个值的,你这里没有返回任何值
System.out.println("a和b之间的最大数是:"+max(a,b));
}
}
----------------解决方案--------------------------------------------------------
2.
public class zxc{
public static void main(String[] args){
int m[]=new int[10];
m[0]=m[1]=1;
m[2]=m[0]+m[1];
System.out.print(m[0]+\" \"+m[1]+\" \"+m[2]+\" \");
for (int i=3;i<10;i++){ //一共就10个,所以不能写<=10
m[i]=m[i-1]+m[i-2];
System.out.print(m[i]+\" \");
}
}
}
3.a>b?1:2;这个是需要有返回值的,你用int c = a>b?1:2;就没错了
----------------解决方案--------------------------------------------------------
第一个程序我还发现的一个问题是'T'显示次数是错的....不知道是为什么..
第二个程序我是搞懂了.谢谢大哥门的解释
但是还没有告诉我第3个问题是什么原因???
谢谢\
----------------解决方案--------------------------------------------------------
a>b?1:2;
这是一个赋值的语句,可是你的左边却没有任何东西,所以会错啦
你可以改成int c=a>b?1:2;
就可以了
System.out.println("a和b之间的最大数是:"+max(a,b));
还有,你这个max(a,b)没有看到你这个方法的方法体啊
----------------解决方案--------------------------------------------------------
(1)public class q{
public static void main(String[] args){
String a[]=new String{The first snow came,how beautiful it was}; //用{ }初始化
count=0;
and=0;
for(int i=0;i<a.length;i++){ //初始化i=0
for(int j=0;i<a[i].length;i++){ //你实际上要比较的是数组里的每一个字符串元素
if(a[i].charAt(i)=='t') //a[i].charAt(i)才是你需要比较的
count+=1;
else if (a[i].charAt(i)=='T')
and+=1;
}}
System.out.println("t出现的次数:"+count);
System.out.println("T出现的次数:"+and);
}
}
(2)public class zxc{
public static void main(String[] args){
int m[]=new int[10];
m[0]=m[1]=1;
m[2]=m[0]+m[1];
System.out.print(m[0]+" "+m[1]+" "+m[2]+" ");
for (int i=3;i<10;i++){ //数组下标溢出
m[i]=m[i-1]+m[i-2];
System.out.print(m[i]+" ");
}
}
}
(3)你的程序调用一个max方法而并没有见你定义
public class asd{
public static double max(double i,double j) // 你调用的max方法是静态的
{return i>j?i:j;} //返回值
public static void main(String[] args){
double a=1;
double b=2;
System.out.println("a和b之间的最大数是:"+max(a,b));
}
}
----------------解决方案--------------------------------------------------------