java问题,请求各位大神帮助我这个java初学者

weixin_41973264 2018-08-02 09:13:58
package staticinnerclass;
import java.util.*;
class StaticInnerClassDemo
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int num=in.nextInt();
double[] arr=new double[num];
for(double v:arr)
v=in.nextDouble();
ArraySort.Pair p=ArraySort.getPair(arr);
System.out.println("max="+p.getFirst());
System.out.println("min="+p.getLast());
}
}
class ArraySort
{
public static class Pair
{
private double first;
private double last;
public Pair(double first,double last){
this.first=first;
this.last=last;
}
public double getFirst(){
return first;
}
public double getLast(){
return last;
}
}
public static Pair getPair(double[] arr){
if(arr==null)
throw new NullPointerException("指针传递异常");
double max=arr[0]; //
double min=arr[0];
System.out.println(max+" "+min);
for(double v:arr){
if(v>max) max=v;
if(min<v) min=v;
}
return new Pair(max,min);
}
}
...全文
187 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行归来 2018-08-02
  • 打赏
  • 举报
回复
问题有两个,一个是没有给数组赋值;第二个问题是排序的时候,获取最小值运算符逻辑错了。


import java.util.*;

class StaticInnerClassDemo{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int num=in.nextInt();
double[] arr=new double[num];
for(int i=0; i<num; i++){
double v=in.nextDouble();
arr[i] = v;
}
ArraySort.Pair p=ArraySort.getPair(arr);
System.out.println("max="+p.getFirst());
System.out.println("min="+p.getLast());
}
}

class ArraySort {
public static class Pair{
private double first;
private double last;

public Pair(double first, double last) {
this.first = first;
this.last = last;
}

public double getFirst() {
return first;
}

public double getLast() {
return last;
}
}

public static Pair getPair(double[] arr) {
if (arr == null)
throw new NullPointerException("指针传递异常");
double max = arr[0]; //
double min = arr[0];
System.out.println(max + " " + min);
for (double v : arr) {
if (v > max)
max = v;
if (min > v)
min = v;
}
return new Pair(max, min);
}
}
miaoch 2018-08-02
  • 打赏
  • 举报
回复
其实哪怕你用的是Double也是不行的,因为Double v和 arr[i] 会是两个引用,
当你v = nextDouble,会将v指向新的对象,对arr[i] 还是没半毛钱影响
miaoch 2018-08-02
  • 打赏
  • 举报
回复
for(double v:arr) v=in.nextDouble();
这个相当于
double v = arr[i];
v = 1;
v是基本类型,基本类型存值,你改变v的值,对arr[i] 没什么影响
qq593467574 2018-08-02
  • 打赏
  • 举报
回复

代码错误我写在下面注释里了


class StaticInnerClassDemo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
double[] arr = new double[num];
// for (double v : arr) //for each 不能赋值!
// v = in.nextDouble();
for(int i=0;i<arr.length;i++){
arr[i]=in.nextDouble();
}
System.out.println(Arrays.toString(arr));
ArraySort.Pair p = ArraySort.getPair(arr);
System.out.println("max=" + p.getFirst());
System.out.println("min=" + p.getLast());
}
}

class ArraySort {
public static class Pair {
private double first;
private double last;

public Pair(double first, double last) {
this.first = first;
this.last = last;
}

public double getFirst() {
return first;
}

public double getLast() {
return last;
}
}

public static Pair getPair(double[] arr) {
if (arr == null)
throw new NullPointerException("指针传递异常");
double max = arr[0]; //
double min = arr[0];
System.out.println(max + " " + min);

for (double v : arr) {
if (v > max)
max = v;
//if (min < v) 这个写反了
if (v < min)
min = v;
}

return new Pair(max, min);
}
}
moonwindlight 2018-08-02
  • 打赏
  • 举报
回复
这提问水平还得加强啊,看不出是啥问题? 学会提问
qq_32427077 2018-08-02
  • 打赏
  • 举报
回复
出现什么问题了也不说
  • 打赏
  • 举报
回复
你这初学者 起点不低

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧