Member 14768145 Ответов: 1

Мне нужна помощь, чтобы исправить ошибки этого проекта


подсказка заключается в том, чтобы написать программу
that reads n, name and idno from input and inserts them in a btree of degree 3(2-3Tree). Then reads k idno from input and queries the btree.


Что я уже пробовал:

import java.util.*;
import java.io.*;

public class xxxxxP5{ //btree3 is 2-3Tree

PrintStream prt = System.out;

int deg; // degree of Btree

node root = null; //root of the btree3

  
  
  
  
  
  

// class used for search

private class SearchResult{

node leaf; boolean found;

// SearchResult Constructor

SearchResult(node t, boolean k){

leaf = t; found = k;

} // endSearchResult Constructor

} // end class SearchResult

// class node

private class node {

int count; // current no. of data in the node

int[] id; String[] name; node link[], parent;

node(int x, String s, int k) { // node Constructor

count = 1; // Allocate k spaces for id, name and link arrays

id = new int[k]; name = new String[k]; link = new node[k];

String[1] = s; id[1] = x; //NOTE:id[0]&name[0] are not used

} // end node Constructor

} // end class node

// SEARCH FOR X in BTree

private SearchResult search(int x) {

return search(x, root);

} // end serach

  

// Search for x in BTree with root t

private SearchResult search(int x, node t) {
if (t==null)
return newSearchResult(null,false);

// end if t == null
// t is not null, so search current node for x and proper link

node cur=t;
while(t != null){
cur=t;
k=t.count;
for (i = 1; i <= k; i++)
if (x == t.data[i])
return new SearchResult(t, true);

if (x < t.data[1])
t = t.link[0];
while( x < t.data[k])
k--;
t = t.link[k];
}
}

returnnew SearchResult(cur, false);

} // end search method

  

// Inorder Traversal of BTree starting from root

private void inorder() {

prt.printf("\nInorder: "); // contents of the BTree

inorder(root); prt.printf("\n");

} // end inorder method

  

// Inorder Traversal, BTree starting from node t

private void inorder(node t){

if (t == null) return;

inorder(t.link[0]);

for (int i = 1; i <= t.count; i++){

prt.printf(t.id[i] + " ");

inorder(t.link[i]);

} // end for   

} // end inorder method

private void insert(int x, String s){ // insert x & s in BTree

prt.printf("\nInsert %d, %s", x, s);

if (root == null){ // insert x into empty BTree

root = new node(x, s, deg); return;

} // end if root == null

SearchResult r = search(x); // First search for x

if( r.found == false) insert(x, s, r.leaf); // insert if x is not in btree   

else prt.printf(" Ooops..Duplicate...");

} // end insert method

  

// insert id & name in leaf node t

private void insert(int x, String s, node t){

//insert x, s and pointer T2=null in leaf node t
  
n = deg -1;
  
node T2;
or (T2= null ;;){// INFINITE LOOP
if (t.count < n){
  
data[j] = x;
link[j] = T2;
if (T2 != null)
}
node tmp = new node(x, deg+1);
tmp.link[0] = t.link[0];
for(j = 1; j <= t.count){
tmp.data[j] = t.data[j];
tmp.link[j] = t.link[j];
  
T2 = newnode(all data to the right of middle data);
  
x = data[j];
if (t == root) {
T1 = newnode(x) // new root
T1.link[0]= t;
T1.link[1]= T2;
root = T1;// root changed
T2.parent = T1;
t.parent = T1;
return;
  
}
t = t.parent;
}}

} // end insert method

private void readinput() { // read input

int j, x; String s; deg = 3;

try{

Scanner inf = new Scanner(System.in);

int n = inf.nextInt(); //read no. of data

// read input and create BTree

for(j = 1; j <= n; j++){

x = inf.nextInt(); //read next idno

s = inf.next(); //read next name

insert(x, s);

} // end for

inorder(); // print inorder traversal of btree

int n = inf.nextInt(); //read no. of data to query

// Query BTree

for(j = 1; j <= n; j++){

x = inf.nextInt(); //read next idno

SearchResult t = search(x);

if (t.found == false) prt.printf("\n %d does not EXIST.", x);

else prt.printf("\nName of %d is %s.", x, t.name);

} // end Query BTree

} // end readinput method

  

// main method

public static void main(String[] args) throws Exception{

// Make sure to change the name in next line

System.out.print("\n\tG. Project 5, "

+ "\n\t BTree Insertion & Query program " + java.time.LocalDate.now());

xxxxxP5 t = new xxxxxP5 (); // xxxxx is the first 5 char of your last name

t.readinput();

} // end main method

} // end xxxxxP5 class

Patrice T

а ошибки есть ...

Member 14768145

ошибка: <идентификатор> ожидается
ошибка: ';' ожидаемая

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
включите номер строки.

1 Ответов

Рейтинг:
2

OriginalGriff

Во-первых, сделайте себе одолжение и сделайте отступ в своем коде, чтобы действительно можно было понять, что там происходит.

Во - вторых, посмотрите на сообщение об ошибке-если я вставляю этот код в онлайн-компилятор, он говорит мне, что первый eror находится в строке 90:

Main.java:90: error:  expected
returnnew SearchResult(cur, false);
И быстрый взгляд на это, и становится очевидным, в чем проблема: вам нужно пространство между "возвращением" и "новым".
Исправьте это, снова скомпилируйте, посмотрите на первую ошибку.

Повторяйте это для всех других ошибок, пока не получите чистую компиляцию, и вы можете начать искать ошибки времени выполнения - и использовать для этого отладчик!