gpt4 book ai didi

java - 结尾逻辑错误

转载 作者:行者123 更新时间:2023-12-02 05:13:39 26 4
gpt4 key购买 nike

我即将完成本周到期的一个项目。它是一个按升序获取数组的交集和差集的程序。就方法而言,一切都正常,但我试图在用户响应之间添加换行符,但我必须在某个地方删除了某些内容,并且无法找到该部分的日志。它应该只是重复 do while 循环中的内容,但是当我第二次再次执行时,它看起来像是将我要输入 int 的数字集相乘。我知道这一定是一个简单的逻辑错误,但此时我的头很痛。

这是我到目前为止得到的:

import java.util.Scanner;
public class settest {

public static Scanner kbd = new Scanner(System.in);

/*
* This method will retrieve "size" number of unique
* integers from keyboard and placed into an array set.
*/
public static void getData(int [] set, int size){

boolean isUnique=false;
int input; int count=0;

while(count < size){
input = kbd.nextInt();
for(int i=0; i < size; i++)
{
if (input == set[i])
{
isUnique = true;
}
}

if (!isUnique)
{
set[count] = input;
count++;
}
isUnique = false;
}

}

/*
* This method will calculate the intersection of two sets of arrays.
* It needs to receive two sets of arrays, their size, and a holding
* array as parameters from the main program.
* When finished the method will return the numbers that are in common
* in both sets (resultSize)
*/
public static int intersection(int [] setA, int sizeA , int [] setB,
int sizeB, int [] resultSet){

int resultSize=0;
for(int x=0; x<sizeA; x++)
{
for(int y=0; y<sizeB; y++)
{
if(setA[x]==setB[y])
{
resultSet[resultSize]=setA[x];
resultSize++;
}
}
}

return resultSize;
}

/*
* Calculates the difference (A-B) of the two array sets.
* It will received the set [], size of correct array and in
* ascending order as parameters.
* Returns the correct array size for the received resultSet[]
*/
public static int difference(int [] setA, int sizeA , int [] setB,
int sizeB, int [] resultSet){

int resultSize=0; boolean sameVal=false;

for(int x=0; x<sizeA; x++ ){
for(int y=0; y<sizeB; y++){
if(setA[x]==setB[y]){
sameVal=true;
}
}
if(!sameVal){
resultSet[resultSize]=setA[x];
resultSize++;
}
sameVal=false;
}
return resultSize;
}

/*
* Method will sort the numbers in set[] array into ascending order.
*/
public static void sort(int [] set, int size){

for(int x=0; x< size-1; x++)
{
for(int y=x+1; y<size; y++)
{
if(set[x] > set[y])
{
int temp = set[x];
set[x] = set[y];
set[y] = temp;
}
}
}
}

public static final int MAXSIZE = 20;

public static void main(String[] args) {
int [] setA = new int[MAXSIZE];
int [] setB = new int[MAXSIZE];
int [] resultSet = new int[MAXSIZE];
int sizeA=0, sizeB=0;int resultSize=0;
String repeat;

do{
System.out.println("ENTER 2 SETS OF NUMBERS.\n");
System.out.println("HOW MANY NUMBERS IN YOUR FIRST SET?");
sizeA=kbd.nextInt();
for(int i=0; i<sizeA; i++){

if (sizeA>MAXSIZE){
System.out.println("\nERROR: SET SIZE LIMIT EXCEEDED."
+ "ENTER A DIFFERENT AMOUNT. \n");
sizeA = kbd.nextInt();
}

}
System.out.println("\nENTER THE FIRST SET OF NUMBERS");

getData(setA, sizeA);
sort(setA,sizeA);


System.out.println("\nHOW MANY NUMBERS IN YOUR SECOND SET?");
sizeB=kbd.nextInt();
for(int i=0; i<sizeB; i++){

if (sizeB>MAXSIZE){
System.out.println("\nERROR: SET SIZE LIMIT EXCEEDED. \n"
+ "ENTER A DIFFERENT AMOUNT.\n ");
sizeB = kbd.nextInt();
}

}
System.out.println("\nENTER THE SECOND SET OF NUMBERS");

getData(setB, sizeB);
sort(setB, sizeB);

System.out.println("\nINTERSECTION:");
resultSize=intersection(setA,sizeA,setB,sizeB, resultSet);
for(int i=0; i<resultSize; i++){
System.out.print(resultSet[i] + " ");
}

System.out.println("\n\nDIFFERENCE OF A-B:");
resultSize=difference(setA,sizeA,setB,sizeB, resultSet);
for(int i=0; i<resultSize; i++){
System.out.print(resultSet[i]+" ");
}
System.out.println("\n\nDIFFERENCE OF B-A:");
resultSize=difference(setB,sizeB,setA,sizeA, resultSet);
for(int i=0; i<resultSize; i++){
System.out.print(resultSet[i]+" ");
}
System.out.println("\n\nDO YOU WANT TO CONTINUE?");

repeat= kbd.next().toLowerCase();

} while(repeat.equals("y"));

}

}

任何帮助将不胜感激。

ENTER 2 SETS OF NUMBERS.

您的第一组中有多少个数字?3

输入第一组数字432

您的第二组中有多少号码?2

输入第二组数字56

交叉点:

A-B 的差异:2 3 4

B-A 的区别:5 6

您想继续吗?是输入 2 组数字。

您的第一组中有多少个数字?1

输入第一组数字6

您的第二组中有多少号码?6

输入第二组数字3541097

交叉点:

A-B 的差异:6

B-A 的区别:1 3 4 5 7 9

您想继续吗?8再见

在循环的第二次循环中,用户数量以某种方式增加到广告 1 或几个的位置

最佳答案

我相信下面的代码会对您有所帮助。您可以将初始化数组部分移至 while 循环中,以便可以根据用户输入初始化数组的大小。

public static void main(String[] args) {
int sizeA=0, sizeB=0;int resultSize=0;
String repeat;

do{
System.out.println("ENTER 2 SETS OF NUMBERS.\n");
System.out.println("HOW MANY NUMBERS IN YOUR FIRST SET?");
sizeA=kbd.nextInt();

int [] setA = new int[sizeA ]; //Initializing Array of size that user inputs.

for(int i=0; i<sizeA; i++){

if (sizeA>MAXSIZE){
System.out.println("\nERROR: SET SIZE LIMIT EXCEEDED."
+ "ENTER A DIFFERENT AMOUNT. \n");
sizeA = kbd.nextInt();
}

}
System.out.println("\nENTER THE FIRST SET OF NUMBERS");

getData(setA, sizeA);
sort(setA,sizeA);


System.out.println("\nHOW MANY NUMBERS IN YOUR SECOND SET?");
sizeB=kbd.nextInt();

int [] setB = new int[sizeB]; //Initializing Array of size that user inputs.

for(int i=0; i<sizeB; i++){

if (sizeB>MAXSIZE){
System.out.println("\nERROR: SET SIZE LIMIT EXCEEDED. \n"
+ "ENTER A DIFFERENT AMOUNT.\n ");
sizeB = kbd.nextInt();
}

}
System.out.println("\nENTER THE SECOND SET OF NUMBERS");

getData(setB, sizeB);
sort(setB, sizeB);

/* Initializing the result array with Largest among sizeA and sizeB*/
resultSize = sizeA;
if(sizeB > sizeA)
{
resultSize = sizeB;
}
int [] resultSet = new int[resultSize];

System.out.println("\nINTERSECTION:");
resultSize=intersection(setA,sizeA,setB,sizeB, resultSet);
for(int i=0; i<resultSize; i++){
System.out.print(resultSet[i] + " ");
}

System.out.println("\n\nDIFFERENCE OF A-B:");
resultSize=difference(setA,sizeA,setB,sizeB, resultSet);
for(int i=0; i<resultSize; i++){
System.out.print(resultSet[i]+" ");
}
System.out.println("\n\nDIFFERENCE OF B-A:");
resultSize=difference(setB,sizeB,setA,sizeA, resultSet);
for(int i=0; i<resultSize; i++){
System.out.print(resultSet[i]+" ");
}
System.out.println("\n\nDO YOU WANT TO CONTINUE?");

repeat= kbd.next().toLowerCase();

} while(repeat.equals("y"));

关于java - 结尾逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27141364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com