JAVA ISBN计算问题。。简单JAVA编程

JAVA ISBN计算问题。。简单JAVA编程,第1张

你的程序主要有3个问题:

(1)没有强制用户的输入值必须为9位数字

(2)取每位数字错误;

(3)只计算了余数,没有计算差。(详见“校验码的计算方法”)

修改后的Java程序:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package javaapplication1

/**

*

* @author Jinchuan

*/

import java.util.Scanner

public class Exercise03_09 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in)

String temp

int isbn

//限制用户只能输入9位数字

while(true){

System.out.print("Enter the first 9-digit of an ISBN number as integer: ")

temp = input.next()

try{

isbn = Integer.parseInt(temp)

}

catch(Exception e){

continue

}

if(temp.length() == 9)

break

}

//isbn = 730904547

int a = isbn / 100000000 //第1位

int b = (isbn / 10000000) % 10 //第2位

int c = (isbn / 1000000) % 10

int d = (isbn / 100000) % 10

int e = (isbn / 10000) % 10

int f = (isbn / 1000) % 10

int g = (isbn / 100) % 10

int h = (isbn / 10) % 10

int j = isbn % 10

int r = 11 - (a*10 + b*9 + c*8 + d*7 + e*6 + f*5 + g*4 + h*3 + j*2) % 11

if (r == 10)

System.out.print("The ISBN number is " + a + b + c + d + e + f + g + h + j + "X")

else if (r == 11)

System.out.print("The ISBN number is " + a + b + c + d + e + f + g + h + j + "0")

else

System.out.print("The ISBN number is " + a + b + c + d + e + f + g + h + j + r)

}

}

运行测试:

Enter the first 9-digit of an ISBN number as integer: 12345

Enter the first 9-digit of an ISBN number as integer: 1234567890

Enter the first 9-digit of an ISBN number as integer: 730904547

The ISBN number is 7309045475

源代码如下:

#include<iostream>

#include<iomanip>

#include<string>

#include<fstream>

#include<stdio.h>

using namespace std

const   int   maxb=10000   //最多的图书

class   book//图书类

{

int   tag   //删除标记1:已删0:未删

int   number   //isbn书号

char   name[20]   //书名

char author[10]//主编

char number2[10]//版次

char position[20]//出版社

char time[20]//出版年

void   addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr)   //增加图书  

{

tag=0

number=n

price=pr

strcpy(name,na)

strcpy(author,au)

strcpy(number2,n2)

strcpy(position,da)

strcpy(time,ti)

onshelf=1

}  

扩展资料

1、源程序中,很多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号。

2、用花括号括起来的部分,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。

3、一个说明或一条语句占一行,与该结构开始处的左花括号对齐。


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

原文地址: http://outofmemory.cn/yw/11344686.html

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

发表评论

登录后才能评论

评论列表(0条)

保存