在JAVA,输入一个正整数,求此正整数的中间数(比如12345的中间数是3,1234则没有中间数)

题目是:The middle digit of an integer number (Middle, for short). For a positive number read from the standard input extract the digit in the middle and display it, if this exists; otherwise display “no middle digit”. For 145, the middle digit is 4, whereas in the case of 1324, there is no middle digit.
我自己编写了个程序,可以编译,可是一运行就出现错误,请帮我修改看看那里错了
//Display Enter an integer number in a message dialog box
String Integernumber = JOptionPane.showInputDialog("Enter an integer number:");
//Calculate how many figure in this integer number
String str1 = String.valueOf(Integernumber);
int str = Integer.parseInt(str1);
//determine the length of number isn't even.
int digit = str % 2;
if (digit == 0) {
String output = "There is no middle digit in "+Integernumber;
JOptionPane.showMessageDialog(null, output);
}
else {
double n = str / 2;
double n1 = n - 0.5;
double n2 = n + 0.5;
int n11 = (int)n1;
int n22 = (int)n2;
String middle = Integernumber.substring(n11,n22);
String output = "The middle digit in "+Integernumber+" is "+middle;
JOptionPane.showMessageDialog(null, output);
}
}
}
最好给我全部的代码,谢谢了

第1个回答  2010-10-27
首先需要判断的输入的整数是否符合需求,然后再逐步判断,这也是工作中必不可少的步骤,我写的一个简单的如下:
public class Test3 {

public static void main(String[] args) {
//Display Enter an integer number in a message dialog box
String Integernumber = JOptionPane.showInputDialog("Enter an integer number:");
//Calculate how many figure in this integer number
String str1 = String.valueOf(Integernumber);
//判断是否输入正整数
if(str1.length()==0||str1.indexOf("-")>=0){
JOptionPane.showMessageDialog(null, "请输入一个正整数");
return;
}
//判断是否存在中间的正整数
if(str1.length()%2 == 0){
JOptionPane.showMessageDialog(null, "不存在中间的整数");
return;
}
//输入一位整数的情况
if(str1.length() == 1){
JOptionPane.showMessageDialog(null, "请输入大于一位的正整数");
return;
}
//符合需求的情况
if(str1.length()%2 != 0){
String middleNum = str1.substring(str1.length()/2, str1.length()/2+1);
JOptionPane.showMessageDialog(null, str1+"的中间的整数为:"+middleNum);
return;
}
}

}
第2个回答  2010-10-27
int str = Integer.parseInt(str1);
这句代码把字符串转成了数字,也就是说你后面对str的操作都是基于整形数字的。而你想输出中间数字的话,应该对字符串操作。

所以 String Integernumber = JOptionPane.showInputDialog("Enter an integer number:");
后应该是int len = integernumber.length();
if(len %2 == 0){
//no mid value;
}
else{ System.out.println("Mid value is "+integernumber.charat (len /2 +1 ));
}
第3个回答  2010-10-27
import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args){
String Integernumber = JOptionPane.showInputDialog("Enter an integer number:");
int len = Integernumber.length();
if(len % 2 == 0){
String output = "There is no middle digit in "+Integernumber;
JOptionPane.showMessageDialog(null, output);
} else {
char middle = Integernumber.charAt(len/2);
String output = "The middle digit in "+Integernumber+" is "+middle;
JOptionPane.showMessageDialog(null, output);
}
}
}
已经运行过了,没问题本回答被提问者采纳
第4个回答  2010-10-27
//determine the length of number isn't even.
int digit = str % 2;
这个能确定这个数的位数是偶数还是技术吗?不行吧!比如21,他不能被2整除,但是,它却是偶数位。所以,逻辑错误。
1.将int digit=str%2改为,int digit=integernumber.length()%2;
2.else模块建议采用Ncross的代码;
第5个回答  2010-10-27
crystal_186 回答是对的
但是楼主的题目到底是中间位置的数 还是中间的那个平均数?
比如 13245
楼主的意思是找到中间位置的数 2
还是找到 中间的平均数 3 ?

crystal_186 回答是中间位置的数。

在JAVA,输入一个正整数,求此正整数的中间数(比如12345的中间数是3...
String str1 = String.valueOf(Integernumber);\/\/判断是否输入正整数 if(str1.length()==0||str1.indexOf("-")>=0){ JOptionPane.showMessageDialog(null, "请输入一个正整数");return;} \/\/判断是否存在中间的正整数 if(str1.length()%2 == 0){ JOptionPane.showMessageDialog(null, "不...

...写,输入一个正整数N,输出他的转置,比如输入12345,输出就为54321,要求...
public static void main(String[] args) {Scanner in =new Scanner(System.in);System.out.println("请输入正整数!");String aa=in.next();String [] b=aa.split("");String [] bb=new String[]{};List<String> list=new ArrayList<String>();for (int i = 0; i < b.length; ...

JAVA实现读入一个正整数,输出它的位数。例如:输入124,则输出3?
public class temp { public static void main(string[]args){ string str = string.valueof(12345);stringbuffer buff = new stringbuffer();system.out.println(str);for(int i=str.length()-1;i>=0;i--){ buff.append(str.charat(i));} string retstr = buff.tostring();integer ret...

用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n...
给你写了个程序可以实现,比如在主函数输入5,则输出表示5!(120)的数组[0, 2, 1],其中0表示个位数,2表示十位数,1表示百位数,程序如下:public static void factor(int n) {int[] product = {1}; \/\/从1开始,循环相乘,比如[1] * 2 -> [2] \/\/[2] * 3 -> [6] \/...

用java编程:输入一个正整数,将该数的各位左右反转输出。如123。输出...
import java.util.*;public class aa { public static void main(String args[]){ Scanner input=new Scanner(System.in);System.out.println("请输入一个三位数整数");int a=input.nextInt();int num[]=new int[3];for(int i=0;i<3;i++){ num[i]=a%10;a=a\/10;} System.out....

求Java源代码:用Java实现输出:输入一个正整数,将该数的各位左右反转输出...
public static void main(String[] args) { String str = String.valueOf(12345);StringBuffer buff = new StringBuffer();System.out.println(str);for(int i=str.length()-1;i>=0;i--){ buff.append(str.charAt(i));} String retStr = buff.toString();Integer retInt = Integer....

用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n...
System.out.println("请输入你要!的数:");\/\/提示用户输入Scanner in = new Scanner(System.in);int n = in.nextInt();\/\/获得用户输入的值long res=1;\/\/因为数字可能会很大,所以使用longfor(int i=1;i<n+1;i++){\/\/循环获得乘积res *= i;}System.out.println(res);\/\/打印结果 ...

用JAVA代码从键盘输入一个正整数n,然后求1+2+3+…+n的结果并输出。
import java.util.Scanner;public class Main{ public static void main (String[]args){ Scanner sc = new Scanner (System.in);System.out.print ("请输入一个正整数: ");int n = sc.nextInt ();int sum = 0;for (int i = 1; i <= n; i++){ sum += i;} System.out.print...

编写java程序,实现接受用户输入的正整数,输出该数的阶乘.例如:输入数据...
有两个地方建议改改。。。第一个是循环中的“number<=i”,,,把等号删除。。。第二个是循环中的fact*=i...把i改为number。。。改正之后应该就是没问题了

java语言程式设计 输入一个正整数N,输出表达式1+1\/2+1\/3+.+1\/N的值
java语言程式设计 输入一个正整数N,输出表达式1+1\/2+1\/3+...+1\/N的值 package test;import java.util.Scanner;public class Express { public static void main(String[] args) { System.out.println("请输入n的值"); Scanner scan=new Scanner(System.in); int n=scan.nextIn...

相似回答