java字符串中大小写转换的问题

java字符串中的大写变小写,小写变大写,可是不知为什么不可以,只以变大写,我认为是这的问题while(str[i]!='*'){if(str[i]<='Z'&&str[... java字符串中的大写变小写,小写变大写,可是不知为什么不可以,
只以变大写,
我认为是这的问题
while(str[i]!='*')
{
if(str[i]<='Z'&&str[i]>='A')
str[i]=Character.toLowerCase(str[i]);
if(str[i]<='z'&&str[i]>='a')
str[i]=Character.toUpperCase(str[i]);
i++;
}
但是不知道怎么改,也不知道为什么,请大家帮助,最好说能说明原因
下面是全部代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class changechar extends JFrame
{
private JLabel L1,L2;
private JTextField T1,T2;
private JButton changeB,exitB;
public changechar()
{
L1=new JLabel("请输入字符:",SwingConstants.RIGHT);
L2=new JLabel("转换后字符为:",SwingConstants.RIGHT);
T1=new JTextField(10);
T2=new JTextField(10);
changeB=new JButton("变换");
ChangeHandler chhandler=new ChangeHandler();
changeB.addActionListener(chhandler);
exitB=new JButton("退出");
ExitHandler exhandler=new ExitHandler();
exitB.addActionListener(exhandler);
Container pane=getContentPane();
pane.setLayout(new GridLayout(3,2));
setTitle("字符转换");
pane.add(L1);
pane.add(T1);
pane.add(L2);
pane.add(T2);
pane.add(changeB);
pane.add(exitB);
setSize(400,200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public class ChangeHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str1;
int i=0;
str1=T1.getText();
char str[]=str1.toCharArray();
while(str[i]!='*')
{
if(str[i]<='Z'&&str[i]>='A')
str[i]=Character.toLowerCase(str[i]);
if(str[i]<='z'&&str[i]>='a')
str[i]=Character.toUpperCase(str[i]);
i++;
}
str1=new String(str);
T2.setText(str1);
}
}
public class ExitHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
changechar chan=new changechar();
}
}
展开
 我来答
Java天地
推荐于2016-10-25 · TA获得超过158个赞
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:148万
展开全部
楼主,你的目的是想变换输入字符的大小写对吧?
例如输入abcdEFG后转换成ABCDefg是吧?

如果是的话,我已经帮你该好了,其实就是改了改你的ChangeHandler中的actionPerformed方法。

你的问题是你自定义了一个代表字符串标记int i=0;,但问题是那样的话你不能确定你的输入字符串的长度,所以会报越界IndexOutOfBoundsException异常。在下面我修改的程序是用for循环来和字符串长度str.length来标记你的输入字符串长度,再用if-else语句来判断输入字符串是大写则转换为小写,是小写则转换成大写。

改好的程序如下:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class changechar extends JFrame{

private JLabel L1,L2;
private JTextField T1,T2;
private JButton changeB,exitB;

public changechar()
{
L1=new JLabel("请输入字符:",SwingConstants.RIGHT);
L2=new JLabel("转换后字符为:",SwingConstants.RIGHT);
T1=new JTextField(10);
T2=new JTextField(10);
changeB=new JButton("变换");
ChangeHandler chhandler=new ChangeHandler();
changeB.addActionListener(chhandler);
exitB=new JButton("退出");
ExitHandler exhandler=new ExitHandler();
exitB.addActionListener(exhandler);
Container pane=getContentPane();
pane.setLayout(new GridLayout(3,2));
setTitle("字符转换");
pane.add(L1);
pane.add(T1);
pane.add(L2);
pane.add(T2);
pane.add(changeB);
pane.add(exitB);
setSize(400,200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public class ChangeHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str1;
str1=T1.getText();
char str[]=str1.toCharArray();
for(int i=0;i<str.length;i++)
{
if(str[i]<='Z'&&str[i]>='A')
str[i]=Character.toLowerCase(str[i]);
else
str[i]=Character.toUpperCase(str[i]);
}
str1=new String(str);
T2.setText(str1);
}
}
public class ExitHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
changechar chan=new changechar();
}
}

看看是你想要的吗?有问题欢迎提问啊!
叫我阿智
2008-01-28 · 超过33用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:110万
展开全部
用 if else if

while(str[i]!='*')
{
if(str[i]<='Z'&&str[i]>='A'){
str[i]=Character.toLowerCase(str[i]);
}else if(str[i]<='z'&&str[i]>='a'){
str[i]=Character.toUpperCase(str[i]);
}
i++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
streetpoet
2008-01-28 · TA获得超过1547个赞
知道小有建树答主
回答量:1599
采纳率:0%
帮助的人:786万
展开全部
直接to啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式