数字的逆序输出,可以不用函数的递归调用吗?
从键盘上输入一个不大于6位的数,判断他的具体位数,然后逆序输出各位数字!代码如下:[code]package baogao;
import java.util.Scanner;
public class Untitled1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个不大于5位的数:");
int n = in.nextInt();
int i,k,m=10,ik_1,ik_2,ik_3,ik_4;
for(i=1;i<=4;i++)
{ m=m*10;
if (m > n)
break;
} k=i+1;
int ik=n/k;
System.out.println(ik);
if(k>1) { ik_1=(m-ik*k)/(k-1);
System.out.println(ik_1);}
if (k>2) { ik_2=(m-ik*k-ik_1*(k-1))/(k-2);
System.out.println(ik_2);}
if(k>3) { ik_3=(m-ik*k-ik_1*(k-1)-ik_2*(k-2))/(k-3);
System.out.println(ik_3);}
if(k>4) {ik_4=(m-ik*k-ik_1*(k-1)-ik_2*(k-2)-ik_3*(k-3))/(k-4);
System.out.println(ik_4); }
if(n>=99999) System.out.println("你输入的数字超过5位!");
}
}[/code]
但是每个if 调用上面的[color=Red]ik_1、ik_2、ik_[/color]3时候,都会报错,是不是需要用[color=Blue]构造函数[/color],我下面该怎么做??
[img]http://sz.photo.store.qq.com/rurl2=e65578887229bfe4058421f0dc7536226235c46263725c443aeb1bd9a24112e602f4aebc1bdd51832016cba6727cbdfe4f675f6aa9458be14b45886921a4831e69d0086ff199f3ca66648dcf7316fc0812912364[/img]
break;
那个n :int n = in.nextInt();这...这m和n能比较吗? 可以转换成String类型撒。
非用int的话,可以%运算和/运算结合。 太复杂了
转换成StrngBuffer,语句reverse就搞定了 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class NumAna extends JFrame{
private Container container;
private JTextField input;
private JTextArea output;
private JLabel inputLabel;
private JButton button,closeButton;
public NumAna(){
super("数字判断");
container = getContentPane();
input = new JTextField("",15);
inputLabel = new JLabel("请输入数字");
input.setDocument(new customDoc());
output = new JTextArea(20,30);
output.setEditable(false);
button = new JButton("分析");
button.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
String num = input.getText();
if(num.length()==0)
output.setText("您没有输入数字。");
else{
output.append("您输入的是:"+input.getText()+",是"+num.length()+"位数.\n");
for(int i=0;i<num.length();i++)
output.append("第"+(i+1)+"位数是:"+num.charAt(i)+"\n");
output.append("\n");
StringBuffer buf = new StringBuffer(num);
buf.reverse();
output.append("逆序后为"+buf.toString()+"\n");
input.setText("");
for(int i = 0;i<buf.toString().length();i++)
output.append("第"+(i+1)+"位数是:"+buf.toString().charAt(i)+"\n");
}
input.grabFocus();
}
}
);
closeButton = new JButton("关闭");
closeButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
System.exit(0);
}
}
);
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
panel1.add(inputLabel);
panel1.add(input);
container.add(new JScrollPane(output));
JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
panel2.add(closeButton);
panel2.add(button);
container.add(panel1,BorderLayout.NORTH);
container.add(panel2,BorderLayout.SOUTH);
pack();
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
setLocation((screenWidth - 800) / 2, (screenHeight - 110) / 2);
setVisible(true);
setResizable(false);
}
public static void main(String args[]){
NumAna num = new NumAna();
num.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class customDoc extends PlainDocument{
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
for(int i=0;i<str.length();i++){
if(str.charAt(i)<'0'||str.charAt(i)>'9'){
return;
}
}
super.insertString(offs,str,a);
}
} 楼上程序不错...特别是对输入数字的处理...给你加点分
页:
[1]
