一个JAVA求回文数的程序,不知道哪错了

一个JAVA求回文数的程序,不知道哪错了,第1张

就按你的方法改的,但是这不是一个良好的算法,有过多的if else语句。以后你学了队列和栈,就好写多了。加油哦!
import javaxswingJOptionPane;
public class Number {
public static void main(String [] args){
int number=0;
int d1=0;
int d2=0;
int d3=0;
int d4=0;
int d5=0;
String str=JOptionPaneshowInputDialog("please input a number between 1 to 99999");
number=IntegerparseInt(str);

if (number<99999&&number>1){
d1=number%10;
d2=number%100/10;
d3=number%1000/100;
d4=number%10000/1000;
d5=number%100000/10000;

}
if(d5!=0){
Systemoutprintln(number+"是5位数");

if(d1==d5&&d2==d4){
Systemoutprintln(number+"是回文数");
}
else{
Systemoutprintln(number+"不是回文数");
}
}

else{
if(d4!=0){
Systemoutprintln(number+"是4位数");
if(d1==d4&&d2==d3){
Systemoutprintln(number+"是回文数");
}
else{
Systemoutprintln(number+"不是回文数");
}
}

else{

if(d3!=0){
Systemoutprintln(number+"是3位数");
if(d1==d3){
Systemoutprintln(number+"是回文数");
}
else{
Systemoutprintln(number+"不是回文数");
}
}

else{

if(d2!=0){
Systemoutprintln(number+"是2位数");
if(d1==d2){
Systemoutprintln(number+"是回文数");
}
else{
Systemoutprintln(number+"不是回文数");
}
}
else{
if(number>=0&&number<=9){
Systemoutprintln(number+"是1位数");
Systemoutprintln(number+"是回文数");

}
else{
Systemoutprintln("您输入的数字超出范围,不能进行判断!");
}
}
}
}
}
}
}

for(inti=10;i
回文数"是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。
定义:一个回文数,它同时还是某一个数的平方,这样的数字叫做平方回数。例如:121。 100 以上至1000以内的平方回数只有3个,分别是:121、484、676。 其中,121是11的平方。

你的算法有问题,我再你得基础上修改下:
import javaappletApplet;
import javaawtEvent;
import javaawtLabel;
import javaawtTextField;
public class HUiWen extends Applet {
Label prompt;
TextField input;
int data;
public void init() {
prompt = new Label("输入数字");
input = new TextField(4);
add(prompt);
add(input);
}
public boolean action(Event e, Object o) {
int data = IntegerparseInt(inputgetText());
showStatus("");
inputsetText("");
int count = 0;
String[] arr = new String[1000000];
while (data != 0) {
arr[count] = StringvalueOf(data % 10);
data = data / 10;
count++;
}
int j = count - 1;
boolean flag = true;
for (int i = 0; i < count / 2; i++, j--) {
if (!arr[i]equals(arr[j])){
showStatus("不是回文数");
flag = false;
}
}
if(flag){
showStatus("是回文数");
}
repaint();
return true;
}
}
我自己写的处理回文,比你那个省内存
import javaappletApplet;
import javaawtEvent;
import javaawtLabel;
import javaawtTextField;
public class HUiWen extends Applet {
Label prompt;
TextField input;
public void init() {
prompt = new Label("输入数字");
input = new TextField(4);
add(prompt);
add(input);
}
public boolean action(Event e, Object o) {
String text = inputgetText()trim();
showStatus("");
inputsetText("");
StringBuilder sb = new StringBuilder(text);
if (sbreverse()toString()equals(text)) {
showStatus("不是回文数");
} else {
showStatus("是回文数");
}
repaint();
return true;
}
}

就是一个字符串的相加
只要记住其它类型的与字符串运算都自动转化为字符串类型了
譬如
String s = "",str=null;
int n = 123;
str = s+n;
那么str就是"123"了 自动把n转化为字符串了
知道这个了就很好理解了
就是每次循环都将字符串累加了 注意每次都变化了就行了

import javautilScanner;
public class Qk {
public static void main(String[] args){
int i;
Systemoutprintln("请指明一维数组包含参数的个数:");
Scanner input=new Scanner(Systemin);
int g=inputnextInt();
String SZ[]=new String[g];
for(i=0;i<SZlength;i++){
Systemoutprintln("请输入第"+(i+1)+"个参数");
SZ[i]=inputnext();
}
for(i=g;i>0;i--){
Systemoutprint(SZ[i-1]);
}
}
}

for(inti=10;i
java使用for判断回文数: 给你一个思想 就是 把这个数字首尾换一下 看 是不是和以前相同 比如12345 换成 54321 几位都不是问题
int reserve(unsigned int value)
{
int ret_val = 0;
int temp = 0;
if(valuerenturn value;
do
{
ret_val = ret_val 10 + value %10;
value = value/10;
}while(value > 0);
return ret_val ;
}
然后 判断 这个函数的返回值和 输入值是否相等即可。


import javautilScanner;
public class YuGiOh
{
public static void main ( String[] args )
{
Systemoutprintln ("输入一个字符串以回车符为结束:");
Scanner scanner = new Scanner (Systemin);
String line = scannernextLine ();
scannerclose ();
if (lineequals (new StringBuilder (line)reverse ()toString ()))
{
Systemoutprintln ("是回文");
}
else
{
Systemoutprintln ("不是回文");
}
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12799177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存