「java浪漫程序」java的浪漫
今天给各位分享java浪漫程序的知识,其中也会对java的浪漫进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、100分 求教一道java题 各位想要分的快来!!
- 2、如何去学习程序员的三大浪漫,编译原理,图形学,操作系统
- 3、java可以写梦幻西游脚本吗
- 4、java代码解析
- 5、以下Java程序空指针异常的原因解释(写原因)
100分 求教一道java题 各位想要分的快来!!
不懂就不要乱说,误人子弟,自己验证过了吗?
主要错误在这里,dvd.name.length这个是15,而你却只有实例化了6个,这肯定会抛空指针异常的
当然还是有几个小错了,我就不一一说明了,你看看我给你改的程序
只对这个类DVDMgr
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class DVDMgr {
DVDSet dvd=new DVDSet();
//调用DVDSet类
Scanner input=new Scanner(System.in);
public void setData(){
dvd.initial();
}
public void startMenu(){
System.out.println("欢迎使用MiniDVD Mgr 1.0");
System.out.println("1.查看");
System.out.println("2.借DVD");
System.out.println("3.退出");
dvd.initial();
int num=input.nextInt();//接受选择的数字
switch(num){
case 1:
showDVD();
break;
case 2:
lend();
break;
case 3:
System.out.println("欢迎您的使用!");
break;
default:
System.out.println("输入错误,异常终止!");
}
}
public void returnMain(){ //返回方法
System.out.println("输入数字0,返回上一级菜单");
int num=input.nextInt();
if(num==0){
startMenu();
}else
System.out.println("输入错误,异常终止");
}
public void showDVD(){ //显示DVD的方法
for(int i=0;idvd.name.length;i++){
if(dvd.name[i]==null){ //如果数组为空 则挑出循环
break;
}
System.out.print("《"+dvd.name[i]+"》");
if(dvd.state[i]==0){
System.out.println("\t\t\t\t已借出");
}else
System.out.println("\t\t\t\t末借出");
}
returnMain(); //返回上级菜单
}
public void lend(){ //借DVD的方法
System.out.print("请输入要借的DVD:");
String num=null;
int flag=3;
try {
num = new BufferedReader(new InputStreamReader(System.in)).readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(dvd.name.length);
for(int i=0;i6;i++){
if((dvd.name[i].equals(num))dvd.state[i]==1){
System.out.println("可借");
System.out.println("操作成功!!");
dvd.state[i]=0; //让存储末借的数字变为可借
flag=1;
break;
}
else if((dvd.name[i].equals(num))dvd.state[i]==0){
System.out.println("已借出");
flag=2;
break;
}
}
if(flag==3)
System.out.println("抱歉!您要借的DVD不存在!");
returnMain();
}
}
如何去学习程序员的三大浪漫,编译原理,图形学,操作系统
学习编译原理和操作系统对编程能力对编程能力的作用在于:
1、学好了编译原理,才可能编写出高效,稳健,占用内存少的程序。
2、学习操作系统对windows相关的编程很有帮助。如果是对操作系统关系不大的C/C++/c#,java之类的编程,关系不大。
编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
java可以写梦幻西游脚本吗
可以。Java是一门面向对象编程语言,java能写《梦幻西游》游戏脚本。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。《梦幻西游》是一款由中国网易公司自行开发并营运的网络游戏。游戏以著名的章回小说《西游记》故事为背景,透过Q版的人物,试图营造出浪漫的网络游戏风格。
java代码解析
一楼的说的够全面了,不过稍有误解.
再来表示抱歉,我对编程语言中的中文名词非常不了解,所以如果以下的回复对你的阅读或者理解造成困难,请见谅.
1.首先,要明白这个问题的答案,需要了解call (pass) by value 和 call (pass) by reference 的区别.简单来说:
call by value通常是复制这个parameter的值去另外一块内存里,然后传给function, 所以在method/function里边对这个变量的所有变更,实际上都是对复制过来的镜像进行操作,不会对原本的variable有任何影响.
call by reference是将parameter的reference传给function,简单点理解就是直接把variable传给function.所以说这个variable的值是可以被function改变的.这个用法在c/c++中非常常见,用法是variable_name.
2.再来,在Java里边,你可以很简单的理解为: Java中只有call by value, 也就是说,所以所有传给function的parameter本身都不会被改变. (这是最简单直白的理解,当然也有另一种常从sun的人那边听到的说法:Java是call by value + call by reference by value)
3.那么现在的问题就是为什么第二个结果是2了. 首先说一下sun官方的解释: 对于reference type在作为parameter/argument的时候,也是call by value, 但是在你拥有足够权限时(比方说那个变量是public的, 不是final的等等各种符合的情况),可以修改这个object中fields的值(也就是属于这个object(严谨点讲是an instance of the object) 内部的变量, 在你的例子中, ko 里边的 a 就是一个field, 所以update(ko)会使ko.a变成2).
4.如果你是一个有过c/c++学习经验的人或者你以上的解释很难理解,以下这种说法或许更适合你 (当然了,这只是大多包括我在内有c经验的人的一种理解方式)
这里可以引入一个新的概念,pointer. 这是一种比较特殊的变量,它内部所储存的东西,其实只是另外一个变量的内存地址. 如果对内存没有概念,你可以把它简单理解为是风筝的线轴,虽然看它本身看不出什么端倪,但是顺着摸过去总会找到风筝,看到它是什么样子. 以pointer方式理解Java的人,通常会说: Type variable = new Type(); 这个过程中,最后生成的这个variable其实就是一个pointer,而不是instance本身.
在Java中, 有c/c++经验的人通常认为Java是call by value.同时,当一个变量用在储存reference type的时候,实际上储存的是它的pointer,这也一样可以解释为什么ko.a会有2这个结果,因为虽然pointer被传到function里边时,本身是call by value,无法被改变.但这并不影响function本身对这个pointer指向的object的内容做任何改变. 当然,再次声明,这只是一种帮助有c/c++经验的人理解的方法. Sun本身严正声明Java里边没有pointer这个东西的存在.
5. 再来解释一下为什么说楼上所说的(或者说楼上引用的)理解略有偏差.
引用"我们上面刚学习了JAVA的数据类型,则有:值类型就是按值传递的,而引用类型是按引用传递的" 这句话很明显的有两点错误. 第一点,如果我上面所说的,Java是没有call by reference的.
第二点,暂且假设Java里边是有call by reference的, 这句话依然不成立.
Java中的变量有两种类型: primitive types 和 reference type.
primitive type包括byte, short, int, long, char, boolean, float和double.
而这8种之外的所有的,都是reference type.
下面是一段对你的贴上来的code的一点延伸,希望可以帮助你更好的理解Java中的argument / parameter到底是如何运作的.
public class Test {
public static void main(String[] args) {
int a = 1;
Koo koo = new Koo();
Object o = new Integer(1);
Koo newKoo = new Koo();
update(a);
update(koo);
update(o);
update(newKoo);
newUpdate(newKoo);
System.out.println(a);
System.out.println(koo.a);
System.out.println(o);
System.out.println(newKoo.a);
}
static void update(int a) {
a++;
}
static void update(Koo koo) {
koo.a++;
}
static void update(Object o) {
o = (int) (Integer.parseInt(o.toString()) + 1);
}
static void newUpdate(Koo koo) {
koo = new Koo();
}
}
class Koo {
int a = 1;
}
/*
o = (int) (Integer.parseInt(o.toString()) + 1); 这一行中的(int)纯粹是多余的,是否有这个casting对code本身没有任何影响. 如果你高兴也可以用
o = new Integer(Integer.parseInt(o.toString()) + 1);
或者干脆
o = Integer.parseInt(o.toString()) + 1;
*/
以上这些code运行之后会得到1 2 1 2的结果. 后面两个结果可以很好的说明, 即使对objects (reference type variables) 来看, Java所应用的也并不是call by reference. 否则的话,以上code运行结果应该是1 2 2 1
希望你可以真正理解这个新的例子中,产生1212这个结果的原因,从而对Java中的arguments有一个系统全面的认识.
图片是相关资料的链接,知道里貌似不能加网址
以下Java程序空指针异常的原因解释(写原因)
for
(int
index
=
0;
index
50;
index++)
{
在这个循环加一个判断你数组50个肯定没用完当你循环到空的时候当然报空指针了
加一个判断
if(ds.name[index]==null)
{
break;
}
java浪漫程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java的浪漫、java浪漫程序的信息别忘了在本站进行查找喔。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。