Java语言,如何实现一个函数里返回2个值,请给出具体代码,答非所问的不采纳

Java语言,如何实现一个函数里返回2个值,请给出具体代码,答非所问的不采纳

1个回答

函数返回值若想返回多个,就不能使用基本数据类型。
1.简单的可以返回数组,比如String[]或是int[]等。
2.还可以返回Set类型的数据
3.灵活一点直接返回Map 类型

例如:
public static Map method(){
Map map = new HashMap();
map.put("","");
return map;

}
纯手敲,望采纳

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java语言怎么实现一个函数返回2个返回值
Java语言怎么实现一个函数返回2个返回值,两个返回值在不同时候返回可以实现么?类似println那样多次调用的,return为什么不行,后面的不执行?
Java语言,3个数字输出max和min,用一个函数怎么做?两个返回值就不会了
Java语言,3个数字输出max和min,用一个函数怎么做?两个返回值就不会了 Java语言,3个数字输出max和min,用一个函数怎么做?两个返回值就不会了
Java语言怎么用一个函数比较两个数字中最大的那个数并且返回
Java语言怎么用一个函数比较两个数字中最大的那个数并且返回 然后再在main函数里面调用
新手关于Java语言语法及环境变量的疑问
最近看了些java语言基础,里面讲到Java单独写一个字面值,会报错,但是写一个有返回值的函数却不接收,则不会报错,但是有返回值的函数最后不是返回一个字面值吗,这和单独写一个字面值有什么区别又为什么不会报错呢? 还有就是关于ClassPATH和ClassLoader的的疑问,我下载JDK后,在配置环境变量的时候,由于失误,只配置了PATH以及JAVA_HOME ,而没有配置ClassPATH环境变量。(cmd里编译,运行,以及桌面使用编译软件时均可正常使用) 按照网上资料的说法,java虚拟机的ClassLoader就应该只会在当前目录下面寻找.class文件。 我尝试了一下,同一个文件夹下的.class文件的确可以相互调用,同一根目录,不同文件夹下的确不行,但是,JDK里的库函数也没有在我后来写代码的目录下呀,甚至连根目录都不相同(一个在C盘,一个在F盘),然而还是可以调用,请问这是什么原理呢?求大佬解答
中途退出有返回值的函数
怎么中途退出有返回值的函数啊, return的话,出现java.lang.NullPointerException, 用exit(0)的话退出整个程序,不是我所要的
c语言和java的混编问题
能不能用c做核心算法,java做界面和控制,并且把java方法的返回值传递给c中的函数来调用。如果能实现,大致思路是什么。
java(JNA/JNative/JNI等)怎样调用 DLL 中 返回 指针 的函数 得到指针值?
<p><strong>JAVA</strong>(JNA/JNative/JNI等)怎样调用<strong><span style="color: blue;">DLL</span></strong>中 <span style="color: #ff0000;">返回指针</span>的函数(指针函数),得到<strong>其值</strong>(其指针对应的值)<strong>?</strong></p> <p>以下给出其它语言的调用示例:</p> <p> </p> <p>//////////////////////////////////////////////////////////////////////////////////////////</p> <p> </p> <p><strong>vb中的调用方式:</strong><br /><br />Private Declare Function functionA Lib "mydll.dll" (ByVal a As Long, ByVal  b As Long, ByVal c As String, d As Long) As Long<br /><br />jieguo = "    "<br />no1 = functionA(0,0,strA,0) '返回识别结果字符的指针<br />no2 = lstrcpy(jieguo, no1) 'VB中用lstrcpy就可以从指针得到字符了,当然你也可以选择其他的方式</p> <p> </p> <p>我要的就是<strong> <em>jiegou</em></strong><br /><br />///////////////////////////////////////////////////////////////////////////////////////////</p> <p><br /><strong>vc中的调用:</strong><br /><br />char* WINAPI functionA(...)<br />    Def_API(tag_functionA, functionA, "mydll.dll")<br /><br />char* ret = functionA(...);<br /><br />我要的就是 <strong>ret</strong>字符串</p> <p> </p> <p>///////////////////////////////////////////////////////////////////////////////////////////</p> <p> </p> <p><span style="color: #ff0000;">那JAVA中怎样来调用呢</span>,DLL我是没办法更改的!试过用JNative、JNA调用,都没有调用<strong>指针函数</strong>的示例.自己用<strong>C</strong>写一个DLL<strong>间接</strong>调用估计可以,但C写DLL不会...</p>
java新手 主函数里面能创建静态方法吗
题目要求: 有一个抽象类ObjectVolume,如下所示: abstract class ObjectVolume { abstract double getVolume(); //返回物体的体积 } (1)编写球体类,立方体类和圆柱体类,它们是抽象类ObjectVolume的子类。 (2)编写一个公共类,其中包含main方法和static void get(ObjectVolume obj)方法。 (3)在main方法中,从键盘上输入1(表示球体)、2(表示立方体)、3(表示圆柱体)时,调用get方法可以分别得到球体、立方体、圆柱体的体积。 /*疑惑:我不知道static void get(ObjectVolume obj)方法干什么用的...怎么创建,是在主函数里创建吗?老师说要使用上转型什么的。。。不知道如何使用程序已经编好,请教如何修改使得static void get(ObjectVolume obj)方法能够用到*/ 请尽量用简单的语言和方法修改... package pzw; import java.util.Scanner; public class main { public static void main(String[] args) { int a; double b; Scanner reader=new Scanner(System.in); System.out.println("请输入1(表示球体)、2(表示立方体)、3(表示圆柱体)"); a=reader.nextInt(); if(a==1) { double r,v; System.out.println("请输入半径"); r=reader.nextDouble(); qiu x=new qiu(r); v=x.getVolume(); System.out.println("球体积为"+v); } else if(a==2) { double r,v; System.out.println("请输入边长"); r=reader.nextDouble(); lifangti x=new lifangti(r); v=x.getVolume(); System.out.println("立方体体积为"+v); } else if(a==3) { double r,h,v; System.out.println("请输入半径和高"); r=reader.nextDouble(); h=reader.nextDouble(); yuanzhu x=new yuanzhu(r,h); v=x.getVolume(); System.out.println("圆柱体体积为"+v); } } } package pzw; abstract class ObjectVolume { abstract double getVolume(); } package pzw; public class lifangti extends ObjectVolume{ double v; lifangti(double a){ v=a*a*a; } public double getVolume() { return v; } } package pzw; public class qiu extends ObjectVolume{ double v=0; qiu(double a) { v=4.0/3*a*a*a*3.14; } public double getVolume() { return v; } } package pzw; public class yuanzhu extends ObjectVolume { double v; yuanzhu(double r,double h) { v=h*r*r*3.14; } public double getVolume() { return v; } }
对函数式编程的不理解 (Haskell)
1. 函数式编程没有副作用? 网上说,是因为只有返回值,而中间不会抛出任何东西,或者是函数式编程不受任何外界的影响。 这一点我完全没有办法理解, 程序结构写完之后都是固定的,当我输入什么,就输出什么,既然结构固定了,怎么还会有影响呢? 2. 函数式编程在固定的输入下就有固定的输出? 难道不是所有的程序语言在固定的输入下只有固定的输出吗? 3. 说函数式变成语言是透明的,这一点我也完全没有办法理解,什么叫引用透明。 请大佬用比较简单的Java或者Haskell语言解释一下上述三个问题,跪谢!
java list传值问题
函数说明: 生成一个 url 语法: link(serviceName{,jspArgNames,jspArgValues{,reportArgNames,reportArgValues}}) 参数说明: serviceName 服务名称 jspArgNames jsp 参数名称数组,可为空,元素类型需为字符串型 jspArgValues jsp 参数值数组,需与 jspArgNames 元素个数相同 reportArgNames 报表参数名称数组,可为空,元素类型需为字符串型 reportArgValues 报表参数值数组,需与 reportArgNames 元素个数相同 示例: 例1:link("ServiceName",list("jspArg1","jspArg2"), list("value1",2),"count",5) 返回 ServiceName?jasArg1=value1&jspArg2=2&params=count=5 这个具体要怎么实现呢? 有点不明白.
如何把c语言转化成java语言?
#include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> #include<iostream> using namespace cv; using namespace std; //宏定义 #define WINDOW_NAME "image[procedure window]" //全局变量声明 Mat g_srcImage,g_maskImage; Point prevPt(-1,-1); //全局函数声明 static void on_Mouse(int event,int x,int y,int flags,void*); //主函数 int main() { //载入源图像 g_srcImage=imread("/Users/new/Desktop/1.jpg"); if(!g_srcImage.data){printf("读取源图像srcImage错误~!\n");return false;} //显示源图像 imshow(WINDOW_NAME,g_srcImage); Mat srcImage,grayImage; g_srcImage.copyTo(srcImage); //灰度化 cvtColor(srcImage, g_maskImage, COLOR_BGR2GRAY); //imshow("image[mask]",g_maskImage); cvtColor(g_maskImage, grayImage, COLOR_GRAY2BGR); //imshow("image[gray]",grayImage); //掩膜图像初始化为0 g_maskImage=Scalar::all(0); //设置鼠标回调函数 setMouseCallback(WINDOW_NAME, on_Mouse,0); //轮询按键处理 while(1) { //获取键值 int c=waitKey(0); //若按键为ESC时,退出 if((char)c == 27) break; //若按键为2时,恢复原图 if((char)c=='2') { g_maskImage=Scalar::all(0); srcImage.copyTo(g_srcImage); imshow("image",g_srcImage); } //若按键为1,则进行处理 if((char)c=='1') { //定义一些参数 int i,j,compCount=0; vector<vector<Point>>contours; vector<Vec4i> hierarchy; //寻找轮廓 findContours(g_maskImage, contours, hierarchy, CV_RETR_CCOMP, CHAIN_APPROX_SIMPLE); //轮廓为空时的处理 if(contours.empty()) continue; //复制掩膜 Mat maskImage(g_maskImage.size(),CV_32S); maskImage=Scalar::all(0); //循环绘制轮廓 for(int index=0;index>=0;index=hierarchy[index][0],++compCount) drawContours(maskImage, contours, index, Scalar::all(compCount+1),-1,8,hierarchy,INT_MAX); //compCount为零时的处理 if(compCount==0) continue; //生成随机颜色 vector<Vec3b>colorTab; for(int i=0;i<compCount;++i) { int b=theRNG().uniform(0, 255); int g=theRNG().uniform(0, 255); int r=theRNG().uniform(0, 255); colorTab.push_back(Vec3b((uchar)b,(uchar)g,(uchar)r)); } //计算处理时间并输出到窗口中 double dTime=(double)getTickCount(); //进行分水岭算法 watershed(srcImage, maskImage); dTime=(double)getTickCount()-dTime; printf("\t 处理时间=%gms\n",dTime*1000./getTickFrequency()); //双层循环,将分水岭图像遍历存入watershedImage中 Mat watershedImage(maskImage.size(),CV_8UC3); for(i=0;i<maskImage.rows;++i) for(j=0;j<maskImage.cols;++j) { int index=maskImage.at<int>(i,j); if(index==-1) watershedImage.at<Vec3b>(i,j)=Vec3b(255,255,255);//图像变白色 else if(index<=0||index>compCount) watershedImage.at<Vec3b>(i,j)=Vec3b(0,0,0);//图像变黑色 else watershedImage.at<Vec3b>(i,j)=colorTab[index-1]; } //混合灰度图和分水岭效果图并显示最终的窗口 watershedImage=watershedImage*0.5+grayImage*0.5; imshow("image[watershed]",watershedImage); } } return 0; } //回调函数定义 void on_Mouse(int event,int x,int y,int flags,void*) { //处理鼠标不在窗口中的情况 if(x<0||x>=g_srcImage.cols||y<0||y>=g_srcImage.rows) return; //处理鼠标左键相关消息 if(event==EVENT_LBUTTONUP||!(flags & EVENT_FLAG_LBUTTON))//按下左键 prevPt=Point(-1,-1); else if(event==EVENT_LBUTTONDOWN)//松开左键 prevPt=Point(x,y);//鼠标所指的位置 //鼠标左键按下并移动,绘制出白色线条 else if(event==EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON)) { Point pt(x,y); if(prevPt.x<0)//如果指出去了,返回 prevPt=pt; line(g_maskImage, prevPt, pt, Scalar::all(255),2,8,0);//画白线 line(g_srcImage,prevPt,pt,Scalar::all(255),2,8,0);//画白线 prevPt=pt; imshow(WINDOW_NAME, g_srcImage); } }
为什么JAVA中一些类用另的一个类的对象来调用?
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegxDemo03 { public static void main(String[] args) { String str = "a-753933" ; String pat ="[abc]-\\d{6}"; Pattern p = Pattern.compile(pat); Matcher m = p.matcher(str); //验证字符串是否合法 if(m.matches()){ System.out.println("格式合格"); }else{ System.out.println("格式不合格"); } } } 感觉有点奇怪,这是一种什么逻辑?直接用一个类来实现不就可以了。具体的像 Pattern p = Pattern.compile(pat); Matcher m = p.matcher(str); //验证字符串是否合法 还有其他一些类,像操作数据库的类也是这样的。 还比如向MySQL的JDBC链接也是这样.比如: Connection con =DriverManager.getConnection(url,username,password); Statement stmt = con.createStatement(); ResultSet rt = stmt.executeQuery(); 我不明白的是为什么需要通过先获得con对象才能通过con对象获得stmt后才能获得rt对象.不明白这种对象的调用原理..新手.才接触java没多久,,希望各位大神能帮忙解惑.说细致点..谢谢..最好能举例说明.. -----------------问答分割线------------------ 昨天提问后.自己从面向对象上找资料复习..然后看到了单例设计模式.因为之前老师在说单例设计模式时一笔带过了..所以印象不深刻..这里给自己的提问做个半总结.因为资料还在看....自我解决问题嘛.. --------------------------------------------- 设计模式:对问题行之有效的解决方式.其实它是一种思想. 1.单例设计模式. 解决的问题:就是可以保证一个类在内存中的对象唯一性. 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 如何保证对象唯一性呢? 1.不允许其他程序用new创建该类对象. 2.在该类创建一个本类实例. 3.对外提供一个方法让其他程序可以获取该对象. 步骤: 1.私有化该类构造函数. 2.通过new在本类中创建一个本类对象 3.定义一个公有的方法,将创建的对象返回. 举个简单的例子: class Single { static Single s = new Single( ); private Single( ){} public static Single getInstance( ) { return s; } } class SingleDemo { public static void main(String[] args) { single ss = single.getInstance( ); } } 私有化构造器,通过类名.方法名调用本类的方法返回s.来得到本类中new出来的对象.这就是昨天所提问的一部分解答..还有一部分问题找答案..为什么需要得到一层再调用一层..我也知道这是一种设计模式..只是想更深入的了解它的设计原理.以及优点.. 谢谢各位耐心的解答..等我完全解决了问题..我再结帖.语言组织能力不是太好,希望这些问题能让与我有同样疑惑的伙伴做个最基础的解惑..非常感谢大家的热心回答及帮助..
这个怎么解????~~~~~
1.我们的程序运行过程中每分钟会采集一个整数的数据指标。 持续采集n分钟就得到一个有n个元素的整数数组a[n]。 现在我们需要一个简单的算法,检测采集到的数据指标中,是否有异常。 异常的检测标准是:如果在连续m分钟内的指标的平均值大于w,则说明有异常。 输入:数组a[n], 正整数m, 整数w 返回:有异常返回 1,没有异常返回 0 例如:对于a={1, 5, 1, 3, 2}, m=2, w=2, 返回:1 附加说明:不同的实现方式执行效率不一样,如果能找到一个很高效的算法就更好了。 2、我们的程序运行过程中用到了一个数组a,数组元素是一个Map/Dictionary。 数组元素的“键”和“值”都是字符串类型。在不同的语言中,对应的类型是: PHP的array, Java的HashMap, C++的std::map, Objective-C的NSDictionary, Swift的Dictionary, Python的dict, JavaScript的object, 等等 示例: a[0]["key1"]="value1" a[0]["key2"]="value2" a[1]["keyA"]="valueA" ... 为了方便保存和加载,我们使用了一个基于文本的存储结构,数组元素每行一个: text="key1=value1;key2=value2\nkeyA=valueA\n..." 要求:请实现一个“保存”函数、一个“加载”函数。 text=store(a); a=load(text); 这两个函数分别用于把数组保存到一个文本字符串中、把文本字符串中的内容读取为数组。 必须自己手写代码实现保存/加载逻辑,严格按照上述的“每行一个、key=value”的格式保存。 附加说明:基于上述格式,如果value中有特殊字符,比如有换行符/分号等怎么办?
easyui 回调函数与行值比对
这个函数绑定到行上了,我用ajax取到before_mpa_in和after_mpa_out这两个值范围,可是if的时候怎么也进不去满足条件的,好比行的val是12,取回来berfore是11,after是22,这个满足了应该直接进去返回val就可以了,但是却进入了else。。。我也转换成整形对比也不行 [code="java"] function getMPA_IN(val,row,rowIndex){ if(val!=null && val!=""){ var before_mpa_in=null; var after_mpa_out=null; $.get("${pageContext.request.contextPath }/hotpowerstation/getByUnitOperationLog.do",function(data){ before_mpa_in = data[0].before_mpa_in; after_mpa_out = data[0].after_mpa_in; }); if(parseInt(val,10) >= parseInt(before_mpa_in,10) && parseInt(val,10) <= (after_mpa_in,10)){ //alert(val); return val; }else{ row.status = 1; //alert('nn'); return "<span style='color:red'>" + val + "</span>"; } } } [/code]
JAVA通讯录 TXT文档分页问题
我在做一个JAVA通讯录,想请问一下如何把这个TXT文档 超过20行分页显示,请前辈们多多指教,谢谢 方便的话请帮我写一下代码看看行吗 package MyAddBook; import java.awt.Choice;//选择 import java.awt.Container;//容器 import java.awt.Frame; import java.awt.GridLayout;//间距 import java.awt.Toolkit;//居中 import java.awt.event.ActionEvent;//事件 import java.awt.event.ActionListener;//监听 import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter;//文本输出流打印对象的格式化 import java.text.Collator;//区分语言 import java.util.Arrays; import java.util.Comparator;//排序 import java.util.Scanner; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane;//消息提示框 import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class MyAddBook { public static JFrame frame; public MyAddBook() { frame=new JFrame("通讯录");//面板标题 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//单击关闭按钮关闭窗口 frame.setVisible(true);//窗口可见 /* * 在一个窗口中,我们经常需要给窗口添加菜单条。在 Java * 中这一部分是由三个类实现的,它们是JMenuBar、JMenu和JMenuItem, 分别对应菜单条、菜单和菜单项。 * 同时,可以给JMenuItem注册侦听器,但不能对JMenuBar,JMenu注册侦听器. * * 一、菜单条(JMenuBar) * JMenuBar 的构造方法是 JMenuBar(),相当简单。在构造之后,还要将它设置成窗口的菜单条,这里要用 setJMenuBar * 方法: JMenuBar TestJMenuBar=new JMenuBar(); * TestFrame.setJMenuBar(TestJMenuBar); 需要说明的是,JMenuBar 类根据 JMenu * 添加的顺序从左到右显示,并建立整数索引。 * * 二、菜单(JMenu) 在添加完菜单条后,并不会显示任何菜单,所以还需要在菜单条中添加菜单。菜单 * JMenu 类的构造方法有4种: JMenu() 构造一个空菜单。 JMenu(Action a) * 构造一个菜单,菜单属性由相应的动作来提供。 JMenu(String s) 用给定的标志构造一个菜单。 JMenu(String * s,Boolean b) 用给定的标志构造一个菜单。如果布尔值为false,那么当释放鼠标按钮后,菜单项会消失;如果布尔值为true, * 那么当释放鼠标按钮后,菜单项仍将显示。这时的菜单称为 tearOff 菜单。 在构造完后,使用 JMenuBar 类的 add * 方法添加到菜单条中。 * * 三、菜单项(JmenuItem) 接下来的工作是往菜单中添加内容。 * 在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。 在构造完后,使用 JMenu 类的 * add 方法添加到菜单中。 子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。 */ JMenuBar bar=new JMenuBar(); JMenu edit=new JMenu("编辑"); JMenuItem edit1=new JMenuItem("录入"); JMenuItem edit2=new JMenuItem("查询"); JMenuItem edit3=new JMenuItem("删除"); JMenuItem edit4=new JMenuItem("修改"); JMenuItem edit5=new JMenuItem("排序"); edit1.addActionListener(new Type());//监听 JMenu show=new JMenu("按性别显示"); JMenuItem show1=new JMenuItem("男"); JMenuItem show2=new JMenuItem("女"); Container c=frame.getContentPane(); JPanel p=new JPanel(); c.add(p); p.add(bar); bar.add(edit); bar.add(show); edit.add(edit1); edit.add(edit2); edit.add(edit3); edit.add(edit4); edit.add(edit5); show.add(show1); show.add(show2); // 获取你的屏幕的宽和高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; // 然后设置你编写的窗口的初始位置,也就是在中间, frame.setLocation(width / 2 - 200, height / 2 - 150); frame.setSize(500, 300); /* * 1. JFrame是javax.swing.JFrame的类,Frame是Java.awt.Frame的类 * * 2. 关闭窗口的方式不同: * 2.1 JFrame的关闭方式:传递参数使得关闭按钮有效 * Frame的关闭方式:加监听使得关闭按钮有效 */ edit2.addActionListener(new ActionListener() // 监听查询 { public void actionPerformed(ActionEvent e) { new Operation("查询", 2).dialog.setVisible(true); } }); edit3.addActionListener(new ActionListener() // 监听删除 { public void actionPerformed(ActionEvent e) { //获取你的屏幕的宽和高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; //然后设置你编写的窗口的初始位置,也就是在中间, frame.setLocation(width / 2 - 200, height / 2 - 150); new Operation("删除", 3).dialog.setVisible(true); } }); edit4.addActionListener(new ActionListener() // 监听修改 { public void actionPerformed(ActionEvent e) { new Operation("修改", 4).dialog.setVisible(true); } }); // 输出类 edit5.addActionListener(new ActionListener() // 监听排序 { public void actionPerformed(ActionEvent e) { new Print("按姓名排序后", 2);//调用 排序 函数 } }); show1.addActionListener(new ActionListener() // 监听男 { public void actionPerformed(ActionEvent e) { new Print("男", 1);//调用 匹配 显示 } }); show2.addActionListener(new ActionListener() // 监听女 { public void actionPerformed(ActionEvent e) { new Print("女", 1);//调用 匹配 显示 } }); } public static void main(String[] args) { new MyAddBook(); } public String[] getSortOfChinese(String[] a) { // Collator 类是用来执行区分语言环境,这里使用CHINA Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); // JDKz自带对数组进行排序。 Arrays.sort(a, cmp); return a; } } class Operation{ private Frame frame; /* * public JDialog(Dialog owner, String title, boolean modal) * 创建一个具有指定标题、模式和指定所有者 Dialog 的对话框。 此构造方法将该组件的语言环境属性设置为 * JComponent.getDefaultLocale 所返回的值。 * * 参数: owner - 显示该对话框的所有者 Dialog; 如果此对话框没有所有者,则为 null * title -该对话框的标题栏中所显示的 String * modal - 指定对话框在显示时是否阻塞用户向其他顶层窗口输入。如果为true,则模式类型属性被设置为 DEFAULT_MODALITY_TYPE; * 否则对话框是无模式的。 * 抛出: * HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true。 */ JDialog dialog = new JDialog(frame, "查询对话框", true); public Operation(String str, int n) { dialog.setSize(450, 300); //获取你的屏幕的宽和高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; //然后设置你编写的窗口的初始位置,也就是在中间, dialog.setLocation(width / 2 - 200, height / 2 - 150); Container c = dialog.getContentPane(); /*GridLayout(int rows, int cols, int hgap, int vgap) : 创建具有指定行数、列数以及组件水平、纵向一定间距的网格布局。*/ dialog.setLayout(new GridLayout(2, 1, 5, 5)); JLabel LOperation = new JLabel("请输入要" + str + "人员的名字"); final JTextField Tname = new JTextField(10);//单行文本输入框 JButton sure = new JButton("确定"); JButton cancel = new JButton("取消"); JPanel pane1 = new JPanel(); JPanel pane2 = new JPanel(); c.add(pane1); c.add(pane2); pane1.add(LOperation); pane1.add(Tname); pane2.add(sure); pane2.add(cancel); dialog.setDefaultCloseOperation(dialog.DISPOSE_ON_CLOSE); if (n == 2) { sure.addActionListener(new ActionListener() // 查询 { public void actionPerformed(ActionEvent e) { try { FileReader file = new FileReader("D:\\AddressBook.txt"); Scanner find = new Scanner(file); /* * 这里while括号里面的find.hasNext()方法用于判断find对象中有没有下一条数据 * 返回 bool 值 , 有则返回true 无 则返回false * 下面的find.next()是获取find对象中的值 然后赋值给 str 然后输出这个方法 * 其实就是循环输出it 对象中所有的值 */ while (find.hasNext()) { if (find.next().equals(Tname.getText())) { dialog.dispose();//关闭窗体,并释放一部分资源。 Type fd = new Type(); fd.frame = new JFrame("查询结果如下"); fd.Tname.setText(Tname.getText()); fd.Csex.select(find.next()); fd.Tunit.setText(find.next()); fd.Thomephone.setText(find.next()); fd.Temail.setText(find.next()); fd.Ttelephone.setText(find.next()); fd.Type(); } } file.close(); find.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block // e1.printStackTrace(); System.out.print("未找到文件"); } catch (IOException e2) { // TODO Auto-generated catch block // e2.printStackTrace(); System.out.print("未找到该人员"); } } }); } if (n == 3) { sure.addActionListener(new ActionListener() // 删除 { public void actionPerformed(ActionEvent e) { try { File file = new File("D:\\AddressBook.txt");//创建文件 Scanner find = new Scanner(file);//输入 FileWriter file1 = new FileWriter("D:\\AddressBook1.txt", true); PrintWriter write = new PrintWriter(file1); while (find.hasNext()) {//取下一个元素 String s = find.next(); if (!(s.equals(Tname.getText()))) { write.print(s + "\t"); write.print(find.next() + "\t"); write.print(find.next() + "\t\t"); write.print(find.next() + "\t\t"); write.print(find.next() + "\t\t"); write.println(find.next()); } else { find.next(); find.next(); find.next(); find.next(); find.next(); } } // file.close(); find.close(); file.delete(); write.close(); file1.close(); File file2 = new File("D:\\AddressBook1.txt"); file2.renameTo(new File("D:\\AddressBook.txt")); JOptionPane.showMessageDialog(null, "删除成功", "删 除 结 果", JOptionPane.INFORMATION_MESSAGE); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block // e1.printStackTrace(); JOptionPane.showMessageDialog(null, "未找到文件"); } catch (IOException e2) { // TODO Auto-generated catch block // e2.printStackTrace(); System.out.print("未找到该人员"); } } }); } if (n == 4) { sure.addActionListener(new ActionListener() // 修改 { public void actionPerformed(ActionEvent e) { try { File file = new File("D:\\AddressBook.txt"); Scanner find = new Scanner(file); FileWriter file1 = new FileWriter("D:\\AddressBook1.txt", true); PrintWriter write = new PrintWriter(file1); while (find.hasNext()) { String s = find.next(); if (!(s.equals(Tname.getText()))) { write.print(s + "\t"); write.print(find.next() + "\t"); write.print(find.next() + "\t\t"); write.print(find.next() + "\t\t"); write.print(find.next() + "\t\t"); write.println(find.next()); } else { dialog.dispose(); Type fd = new Type(); Type.y = 1; fd.frame = new JFrame("查询结果如下"); fd.Tname.setText(Tname.getText()); String s1 = find.next(); fd.Csex.select(s1); String s2 = find.next(); fd.Tunit.setText(s2); String s5 = find.next(); fd.Thomephone.setText(s5); String s6 = find.next(); fd.Temail.setText(s6); String s7 = find.next(); fd.Ttelephone.setText(s7); fd.Type(); if (Type.z == 1) { write.print(Tname.getText() + "\t"); write.print(s1 + "\t"); write.print(s2 + "\t\t"); write.print(s5 + "\t\t"); write.print(s6 + "\t\t"); write.println(s7); Type.z = 2; } } } // file.close(); find.close(); file.delete(); write.close(); file1.close(); File file2 = new File("D:\\AddressBook1.txt"); file2.renameTo(new File("D:\\AddressBook.txt")); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block // e1.printStackTrace(); System.out.print("未找到文件"); } catch (IOException e2) { // TODO Auto-generated catch block // e2.printStackTrace(); System.out.print("未找到该人员"); } } }); } cancel.addActionListener(new ActionListener() // 取消 { public void actionPerformed(ActionEvent e) { dialog.dispose();//关闭查询面板 } }); } } class Print{ public JTextArea area;// 多行文本输入框 public Print(String st, int n) { JFrame frame = new JFrame(st + "信息如下"); area = new JTextArea();// 多行文本输入框 frame.add(area); frame.setVisible(true); frame.setSize(1000, 500); frame.setLocation(350, 150);// 显示位置坐标 if (n == 2) try // 排序 { int i, j, k; String[] all; all = new String[1000]; BufferedReader read = new BufferedReader(new FileReader("D:\\AddressBook.txt")); area.append("姓 名" + "\t" + "性别" + "\t" + "单位" + "\t\t" + "住宅电话" + "\t\t" + "Email" + "\t\t\t" + "移动电话" + '\n'); int z = 1, count = 0; while (z == 1) { for (i = 0; i < 1000; i++) { String str = read.readLine(); if (str != null) { all[i] = str; count++; } else z = 0; } } String[] bll; bll = new String[count]; for (i = 0; i < count; i++) bll[i] = all[i]; getSortOfChinese(bll);// 调用排序函数 for (i = 0; i < count; i++) area.append(bll[i] + '\n');// 在指定元素的结尾追加内容 read.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } if (n == 1) try // 指定类人员 { FileReader file = new FileReader("D:\\AddressBook.txt"); Scanner find = new Scanner(file); area.append("姓 名" + "\t" + "性别" + "\t" + "单位" + "\t\t" + "住宅电话" + "\t\t" + "Email" + "\t\t\t" + "移动电话" + '\n'); while (find.hasNext()) { String str1 = find.next(); String str2 = find.next(); if (str2.equals(st)) { area.append(str1 + "\t"); area.append(str2 + "\t"); area.append(find.next() + "\t\t"); area.append(find.next() + "\t\t"); area.append(find.next() + "\t\t"); area.append(find.next() + '\n'); } else { find.next(); find.next(); find.next(); find.next(); } } file.close(); find.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } private void getSortOfChinese(String[] bll) { // TODO Auto-generated method stub } } class Type implements ActionListener { public static int z = 2; public static int y = 0; public JLabel Lname, Lsex, Lunit, Lhomephone, Lemail, Ltelephone, Lnote;//添加标签 public JTextField Tname = new JTextField(15), Thomephone = new JTextField(25), Temail = new JTextField(25),Ttelephone = new JTextField(25), Tunit = new JTextField(25); public Choice Csex = new Choice();//创建文本框 public JButton sure, cancel;//添加“确定”“取消”按钮 public JFrame frame = new JFrame("录入联系人信息");//面板标题 public Type() { Csex.addItem("男");//给列表框或组合框等具有列表的对象添加项目 Csex.addItem("女"); } public void Type() { Container c = frame.getContentPane();//创建容器 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//单击窗口的关闭按钮时程序执行的操作 frame.setSize(800, 400);//窗口大小 frame.setLayout(new GridLayout(7, 2, 7, 7));//设置用户界面上的屏幕组件的格式布局 frame.setVisible(true);//设置面板可见 //获取你的屏幕的宽和高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; //然后设置你编写的窗口的初始位置,也就是在中间, frame.setLocation(width / 2 - 200, height / 2 - 150); Lname = new JLabel("姓名");//标签 Lsex = new JLabel("性别"); Lunit = new JLabel("单位"); Lhomephone = new JLabel("住宅电话"); Lemail = new JLabel("Email"); Ltelephone = new JLabel("移动电话"); sure = new JButton("确定"); cancel = new JButton("取消"); JPanel pane1 = new JPanel();//添加面板 JPanel pane2 = new JPanel(); JPanel pane3 = new JPanel(); JPanel pane5 = new JPanel(); c.add(pane1);//将面板添加到容器中 c.add(pane2); c.add(pane3); c.add(pane5); pane1.add(Lname);//将标签添加到面板 pane1.add(Tname); pane1.add(Lsex); pane1.add(Csex); pane2.add(Lunit); pane2.add(Tunit); pane2.add(Lhomephone); pane2.add(Thomephone); pane3.add(Lemail); pane3.add(Temail); pane3.add(Ltelephone); pane3.add(Ttelephone); pane5.add(sure); pane5.add(cancel); sure.addActionListener(new ActionListener() // 设置监听器 { public void actionPerformed(ActionEvent e) // 用匿名内部类实现监听器 { if (Tname.getText().equals(""))//输入的姓名是否为空 /* * 显示一个错误对话框,该对话框显示的 message 为 'alert': * JOptionPane.showMessageDialog(null, "alert", * "alert", JOptionPane.ERROR_MESSAGE); */ JOptionPane.showMessageDialog(null, "录入失败姓名必须填写", "录入结果", JOptionPane.INFORMATION_MESSAGE); else { try { FileWriter AddressBook = new FileWriter("D:\\AddressBook.txt", true);//写入文件 PrintWriter add = new PrintWriter(AddressBook); String s1, s2, s3,s4; if (Tunit.getText().equals(""))//未输入数据 s1 = "无"; else s1 = Tunit.getText(); if (Thomephone.getText().equals("")) s2 = "无"; else s2 = Thomephone.getText(); if (Temail.getText().equals("")) s3 = "无"; else s3 = Temail.getText(); if (Ttelephone.getText().equals("")) s4 = "无"; else s4 = Ttelephone.getText(); add.println(Tname.getText()+ "\t" + Csex.getSelectedItem() + "\t" + s1 + "\t\t" + s2 + "\t\t" + s3 + "\t\t" + s4); add.close(); AddressBook.close(); z = 1; } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (y == 0) { JOptionPane.showMessageDialog(null, "录入成功", "录入结果", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, "修改成功", "修改结果", JOptionPane.INFORMATION_MESSAGE); } Tname.setText(""); //删除时传入空白串 Tunit.setText(""); Thomephone.setText(""); Temail.setText(""); Ttelephone.setText(""); } } }); cancel.addActionListener(new ActionListener() // 设置监听器 { public void actionPerformed(ActionEvent e) // 用匿名内部类实现监听器 { frame.dispose();//关闭面板 z = 0; } }); } public void actionPerformed(ActionEvent e) { new Type().Type(); } }
javascript:apply的前面不是应该用函数吗?这里怎么放了个对象?
[code="java"]//把this转换为静态指针,参数o表示预设置this所指代的对象,返回一个闭包函数 Function.prototype.pointTo=function(o){     var _this=this;//存储当前函数对象     return function(){//一个闭包函数         return _this.apply(o,arguments);//执行当前函数并把当前函数的作用域强制设置为指定对象     } } [/code] _this.apply(o,arguments);这个是什么情况?_this是对象,o也是对象,没见过这种用法啊
【字节码】如何理解构造函数中return指令?
<p>经反编译后的构造函数,其字节码最后一条指令return如何理解?<br>构造函数没有数值返回类型,也非void返回类型,为何会有一条return指令存在?<br>这条指令在虚拟机中做了些什么工作?</p> <p> </p> <pre name="code" class="字节码">public Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."&lt;init&gt;":()V 4: return LineNumberTable: line 10: 0 </pre> <p> </p><br/><strong>问题补充</strong><br/><div class="quote_title">devworks 写道</div><div class="quote_div">构造方法返回void</div> <br />返回void为啥不显式地写在方法定义处.<img src="/images/smiles/icon_cool.gif"/> <br/><strong>问题补充</strong><br/><div class="quote_title">kerrysk 写道</div><div class="quote_div">return就是返回函数调用,没什么特殊含义。 <br />这个是构造函数,在你在java内写new时,后面除了一条new指令外,还有个 <br />invokespecial调用这个类的构造函数。 <br />return指的是,pop构造函数frame,回到new指令所在的frame。</div> <br /> <br />哦. <br />"pop构造函数frame,回到new指令所在的frame。" <br />确实是return指令的作用,没有特殊含义. <br /> <br />但为什么不显式写在定义处,虚拟机规范要特别采用隐式方式?<br/><strong>问题补充</strong><br/><div class="quote_title">mercyblitz 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"><div class="quote_title">devworks 写道</div><div class="quote_div">构造方法返回void</div> <br />返回void为啥不显式地写在方法定义处.<img src="/images/smiles/icon_cool.gif"/> </div> <br /> <br /> <br />构造器又不是方法,并且不需要return语句。</div> <br /> <br />不需要return语句,为什么要加return指令...<img src="/images/smiles/icon_cry.gif"/> <br /><br/><strong>问题补充</strong><br/>public Test()<br /> {<br /> System.out.println("public Test();");<br /> }<br /><br /> public void Test()<br /> {<br /> System.out.println("public void Test();");<br /> }<br /><br />void能区分开构造函数与一般方法<br/><strong>问题补充</strong><br/><div class="quote_title">kerrysk 写道</div><div class="quote_div">return就是返回函数调用,没什么特殊含义。 <br />这个是构造函数,在你在java内写new时,后面除了一条new指令外,还有个 <br />invokespecial调用这个类的构造函数。 <br />return指的是,pop构造函数frame,回到new指令所在的frame。</div> <br /> <br />刚又理解了一下,解释得好.<img src="/images/smiles/icon_idea.gif"/> <br />加void与没加void,可能就是为着区分构造函数与一般方法吧.<br/><strong>问题补充</strong><br/><div class="quote_title">mercyblitz 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"><div class="quote_title">mercyblitz 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"><div class="quote_title">devworks 写道</div><div class="quote_div">构造方法返回void</div> <br />返回void为啥不显式地写在方法定义处.<img src="/images/smiles/icon_cool.gif"/> </div> <br /> <br /> <br />构造器又不是方法,并且不需要return语句。</div> <br /> <br />不需要return语句,为什么要加return指令...<img src="/images/smiles/icon_cry.gif"/> <br /></div> <br /> <br />必要性和存在性不同,在实现构造器的时候,可以重用方法的部分语法检查!</div> <br /> <br />嗯.对.<br/><strong>问题补充</strong><br/><div class="quote_title">kerrysk 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"> <br />加void与没加void,可能就是为着区分构造函数与一般方法吧.</div> <br />构造函数与一般方法在虚拟机内不是靠这个区分的。 <br />构造函数与一般方法在虚拟机内的方法签名是不一样的,构造函数一般为&lt;init&gt; <br />一般方法为方法名。 <br />虚拟机根据方法签名,在数据区加载相应的类,构造method结构体,里面有虚拟机指令, <br />解释器负责解释执行。每个方法调用,都在栈上push一个frame,在方法返回时pop,return是 <br />用来告诉解释器,方法解释完毕,在栈上pop frame。 <br /> <br />如果有返回值: <br />&nbsp; sun虚拟机会返回到值栈的栈顶,供调用frame用。 <br />&nbsp; 在dalvik下,是有类似return v0这样的指令,把v0放到全局ret变量,再在调用方法中用move_result指令放到调用栈的 <br />寄存器中。 <br />&nbsp; 也可以在设计invoke指令时,就将返回寄存器直接赋值到调用栈的寄存器中。 <br /></div> <br />谢谢你的耐心讲解,最近在看虚拟机规范很多东西还没理解透彻.
jvm 带来的困惑 --! 希望高人知道 在此谢谢
jvm.h 文件声明的函数 在 jvm.cpp 都是这样实现的 [code="java"] JVM_ENTRY(返回值, 方法名(参数)) 。 。(函数体) 。 JVM_END [/code] 那这个JVM_ENTRY 是做了什么,好像就是一个标记 。。整个过程有点像加载类(这里是函数),貌似是 jvm 启动的时候 就加载进去,但是这个过程是什么样的流程,大家都知道 , 在.h的头文件中申明 ,在cpp 文件中都是 用头文件的声明为函数头加以实现,但是这里是用这样一个特殊的结构,难道这个文件不是由c++ 编译 ,一个专用的编译器,那它又是谁呢 --! 困惑 上网查 都是提下函数体调用一个c++类就走了 望高人 指点下
main.java:3: 错误: 类Point是公共的, 应在名为 Point.java 的文件中声明,这是什么错误
public static class Point { public double x; public double y; //定义一个点方法(函数),其表示为自然语言中的平面坐标点 public Point(double x, double y) { //定义点的横轴坐标值 this.x=x; //定义点的纵轴坐标值 this.y=y; } //根据已知点计算两点间的距离 public double getDistance(Point p) { //定义一个双精度的参数x放两点横轴坐标差值的绝对值 double x=Math.abs(this.x-p.x); //定义一个双精度的参数y放两点纵轴坐标差值的绝对值 double y=Math.abs(this.y-p.y); //根据正弦定理计算出一个双精度的两点坐标距离的值,并将其作为该方法(计算两点间坐标距离)的返回值 return Math.sqrt(x*x+y*y); } //根据已知点计算方位角 public double getAngle(Point p) { //定义一个双精度的参数x放两点横轴坐标差值的绝对值 double x=Math.abs(this.x-p.x); //定义一个双精度的参数y放两点纵轴坐标差值的绝对值 double y=Math.abs(this.y-p.y); //定义一个双精度的参数z放y/x的绝对值 double z=Math.abs(y/x); //计算出两点的坐标方位角,并将其作为该方法(计算已知两点构成的边的坐标方位角)的返回值 return (1/Math.atan(z))/Math.PI*180; } } public interface Check { public static final int Rou=206265; double check(Point P1, Point P2); } //前方交会测量计算 public static class Front_Intersection implements Check { public Point pointA = null; public Point pointB = null; public double angleA = 0; public double angleB = 0; public Point QFJH() { // 定义待定淀P的横轴坐标和纵轴坐标 double x_P = 0; double y_P = 0; int sign = 1; /* * 求出P点的坐标算法,根据余切定理式子的程序化,只需将对应点按逆时针顺序放入即可求出待定点,具体算法如下 */ double sAcB = Math.sin(angleA) * Math.cos(angleB); double cAsB = Math.cos(angleA) * Math.sin(angleB); double sAsB = Math.sin(angleA) * Math.sin(angleB); x_P = (pointA.x * sAcB + pointB.x * cAsB + sign * (pointA.y - pointB.y) * sAsB) / (sAcB + cAsB); y_P = (pointA.y * sAcB + pointB.y * cAsB + sign * (pointB.x - pointA.x) * sAsB) / (sAcB + cAsB); return new Point(x_P, y_P);// 返回P点的坐标值 } /* * 前方交会检核,返回值为求得的两点的横向位移之差的绝对值。 * */ @Override public double check(Point P1, Point P2) { // TODO Auto-generated method stub return P1.getDistance(P2); } } //侧方交会测量计算 public static class Side_Intersection implements Check { public Point pointA = null; public Point pointB = null; public Point pointC = null; public Point pointP = null; public double angleA = 0; public double angleP = 0; public double angleB = 180 - ( angleA + angleP ); public Point CFJH(){ //定义待定淀P的横轴坐标和纵轴坐标 double x_P =0; double y_P =0; int sign = 1; //求出P点的坐标算法 double sAcB = Math.sin(angleA)*Math.cos(angleB); double cAsB = Math.cos(angleA)*Math.sin(angleB); double sAsB = Math.sin(angleA)*Math.sin(angleB); x_P = (pointA.x*sAcB + pointB.x*cAsB + sign*(pointA.y - pointB.y)*sAsB) /(sAcB + cAsB); y_P = (pointA.y*sAcB + pointB.y*cAsB + sign*(pointB.x - pointA.x)*sAsB) /(sAcB + cAsB); return new Point(x_P, y_P);//返回P点的坐标值 } /* * 侧方交会检测方法,返回的是AP的方位角,由于基本的集合知识可以知道AP方位角正弦值的倒数即为观测∠APC的弧度 * */ @Override public double check(Point P1, Point P2) { // TODO Auto-generated method stub return P1.getAngle(P2); } } //主函数 public static class Main { public static void main(String[] args) { // TODO Auto-generated method stub /* * 前方交会测量实现以及对测量值的检核 * */ Point pC1 = new Point(0, 200); Point pB1 = new Point(0, 100); Point pA1 = new Point(0,0); double angleC1 = 44.992/180*Math.PI; double angleB11 = 89.999/180*Math.PI; double angleB12 = 90.001/180*Math.PI; double angleA1 = 45.0/180*Math.PI; //建立前方测量的第一次测量对象test Front_Intersection test = new Front_Intersection(); //依次按逆时针放入对应的点和参数值 test.pointA = pC1; test.pointB = pB1; test.angleA = angleC1; test.angleB = angleB11; Point ret = test.QFJH(); //建立前方测量的第二次测量对象test1 Front_Intersection test1 = new Front_Intersection(); //依次按逆时针放入对应的点和参数值 test1.pointA = pB1; test1.pointB = pA1; test1.angleA = angleB12; test1.angleB = angleA1; Point ret0 = test1.QFJH(); //第一次测量出来的点P的坐标 Point pP11 = new Point (ret.x , ret.y); //第二次测量出来的点P的坐标 Point pP12 = new Point (ret0.x , ret0.y); /* * * 以下为输出语句 * */ System.out.println("根据点C、B,以及∠C和∠CBP求得点P的第一次测量值:"); System.out.println("第一次测量出的点P :"+"(" + ret.x + ", " + ret.y +")"); System.out.println("根据点B、A,以及∠PBA和∠BAP求得点P的第二次测量值:"); System.out.println("第二次测量出的点P :"+"(" + ret0.x + ", " + ret0.y +")"); //实现检测方法 System.out.println("下面进行测量检测:"); double m = test.check(ret, ret0); if(m <= 0.2) { System.out.println("检测合格"); System.out.println("为了更精确P点,取两次测量的平均值:"); Point AVGP1 = new Point ((ret.x + ret0.x)/2 , (ret.y + ret0.y)/2); System.out.println("点P的综合测量值为 :" + "(" + AVGP1.x + ", " + AVGP1.y +")"); System.out.println("点P到点A的距离为:" + AVGP1.getDistance(pA1)); System.out.println("点P到点B的距离为:" + AVGP1.getDistance(pB1)); System.out.println("点P到点C的距离为:" + AVGP1.getDistance(pC1)); System.out.println("AP的方位角为:" + AVGP1.getAngle(pA1)); System.out.println("BP的方位角为:" + AVGP1.getAngle(pB1)); System.out.println("CP的方位角为:" + AVGP1.getAngle(pC1)); } else System.out.println("检测不合格 , 需要重新检测!!!"); /* * * 以下为侧方交会的实现以及对测量值的检核 * */ //侧方交会的参数值 Point pC2 = new Point(100, 0); Point pB2 = new Point(0, 100); Point pA2 = new Point(0, 0); double angleP2 = 45.002/180*Math.PI; double anglePO = 45.005/180*Math.PI; double angleA2 = 44.995/180*Math.PI; double angleB2 = (90.0 - angleP2 + angleA2)/180*Math.PI; //侧方交会的测量对象Test Side_Intersection Test= new Side_Intersection(); //按逆时针顺序依次放入参数 Test.pointA = pB2; Test.pointB = pA2; Test.angleA = angleB2; Test.angleP = angleP2; Point ret1 = Test.CFJH(); //求得的P点值 Point pP2 = new Point (ret1.x , ret1.y); //定义一个双精度变量n放置测量出来的P点到A的方位角正切值得倒数,即∠APC的测量值 double n = 1/Math.atan(Test.check(ret1, Test.pointA)); //定义一个双精度变量l放置点∠APC和观测值和测量值之差的绝对值 double l = Math.abs(anglePO - n); //进行检核判断 if(l <= 40){ System.out.println("检测合格"); System.out.println("点P的综合测量值为 :" + "(" + ret1.x + ", " + ret1.y +")"); System.out.println("点P到点A的距离为:" + pP2.getDistance(pA2)); System.out.println("点P到点B的距离为:" + pP2.getDistance(pB2)); System.out.println("点P到点C的距离为:" + pP2.getDistance(pC2)); System.out.println("AP的方位角为:" + pP2.getAngle(pA2)); System.out.println("BP的方位角为:" + pP2.getAngle(pB2)); System.out.println("CP的方位角为:" + pP2.getAngle(pC2)); } else System.out.println("检测不合格 , 需要重新检测!!!"); } }
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
兼职程序员一般可以从什么平台接私活?
这个问题我进行了系统性的总结,以下将进行言简意赅的说明和渠道提供,希望对各位小猿/小媛们有帮助~ 根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。 所谓的兼职职位众包,指的是需求方这边有自有工程师配合,只需要某个职位的工程师开发某个模块的项目。比如开发一个 app,后端接口有人开发,但是缺少 iOS 前端开发工程师,那么他们就会发布一个职位招聘前端,来配合公司一...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
JAVA 基础练习题
第一题 1.查看以下代码,并写出结果 public class Test01 { public static void main(String[] args) { int i1 = 5; boolean result = (i1++ &gt; 5) &amp;&amp; (++i1 &gt; 4); System.out.println(result); Sy...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
C++知识点 —— 整合(持续更新中)
本文记录自己在自学C++过程中不同于C的一些知识点,适合于有C语言基础的同学阅读。如果纰漏,欢迎回复指正 目录 第一部分 基础知识 一、HelloWorld与命名空间 二、引用和引用参数 2.1引用的定义 2.2 将引用用作函数参数 2.3 将引用用于类对象 2.4 引用和继承 2.5 何时使用引用参数 2.6 引用和指针的区别 三、内联函数 四、默认参数的...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
机械转行java自学经历,零基础学java,血泪总结的干货
机械转行java自学经历,零基础学java,血泪总结的干货 据说,再恩爱的夫妻,一生中都有100次想离婚的念头和50次想掐死对方的冲动。 求职路上亦是如此,打开这篇文章,相信你也有转行的想法。和身边的朋友聊过,入职后的他们,或多或少对现在的职位都有些不满,都有过转行的冲动。 可他们只是想,而我真的这样做了。 下面就介绍下我转行的血泪史。 我为什么要转行 高中复读了一年,考了个双非院校的机械。当时...
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
【Linux系统编程】Linux信号列表
00. 目录 文章目录00. 目录01. Linux信号编号02. 信号简介03. 特殊信号04. 附录 01. Linux信号编号 在 Linux 下,每个信号的名字都以字符 SIG 开头,每个信号和一个数字编码相对应,在头文件 signum.h 中,这些信号都被定义为正整数。信号名定义路径:/usr/include/i386-linux-gnu/bits/signum.h 要想查看这些信号和...
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
借助AI力量,谷歌解开生命奥秘?
全文共4484字,预计学习时长8分钟 Paweł Czerwiński发布在 Unsplash上的原图 假如疾病不复存在会发生什么?如果我们能像大自然一样迅速获取能量又会发生什么?要是我们能够在极短时间内循环塑料、废油、或其它的一些物质呢?如果人类能够解开生命的奥秘,那么以上这些想象将在未来成为现实。人工智能企业DeepMind的数据科学分析师日前在此领域有了重大发现。以下为具体内容:...
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问

相似问题

2
如何将用Spyder写的程序封装成一个函数,生成一个和Java连接的端口?
1
新手关于Java语言语法及环境变量的疑问
2
c语言 为什么函数可以返回了一个局部指针结构体?
2
Java语言怎么实现一个函数返回2个返回值
1
Java用编写函数的方法,颠倒一个字符串,为什么循环次数是n/2-1
1
如何给一个函数在初始化函数里注册
1
Java问题提问,怎么编程实现用函数的方法交换两个整数,一定要用函数!!!
1
Java函数重载问题,编写两个函数,计算圆和长方形面积,构成重载,并且在main函数调用
1
Java语言面向对象,final和finally的区别是什么,函数定义用哪个比较方便
1
Java语言怎么用一个函数比较两个数字中最大的那个数并且返回
1
Java语言怎么实现函数对主程序变量的一个调用的方法呢?调用变量和函数的区别
2
Java语言函数里面的变量和主程序如果一样的话,调用的是哪个变量
2
构建一个函数接受列表并返回值 加急!求帮助
1
Java语言计算sin函数,有多少种代码的编写形式,之前我同桌打岔,没有听懂
1
高分悬赏,Java语言如何用一个函数来交换两个对象
1
Java语言,使用函数而不是字段来定义变量的好处是什么,为什么要用一个函数
1
如何在java中实现protobuffer类型的泛型函数?
3
Java语言,3个数字输出max和min,用一个函数怎么做?两个返回值就不会了
3
函数调用那一章中,编写一个函数求N个数的最大值